#P3684. Physics Experiment

    ID: 2685 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>模拟POJ Founder Monthly Contest – 2008.08.31Simon

Physics Experiment

P3684. 物理实验

标签:物理模拟


题目描述

Simon 正在进行一项物理实验,实验使用 NN 个半径为 RR 厘米的相同小球。实验开始前,所有小球被垂直固定在管中,最底部小球的最低点距离地面高度为 HH 米。

实验开始时(t=0t = 0 秒),第一个小球被释放并因重力下落。之后,每秒释放一个小球,直到所有小球被释放。运动规则如下:

  1. 地面碰撞:小球撞击地面时,以原速反弹(速度大小不变,方向相反)。
  2. 小球碰撞:两球相撞时,交换速度(包括大小和方向)。

已知重力加速度 g=10m/s2g = 10\,\text{m/s}^2,Simon 想知道 TT 秒后所有小球的位置。

输入格式

  • 第一行输入测试用例数量 CCC20C \leq 20)。
  • 每个测试用例包含四个整数:
    • NN(小球数量,1N1001 \leq N \leq 100
    • HH(初始高度,1H100001 \leq H \leq 10000,单位:米)
    • RR(小球半径,1R1001 \leq R \leq 100,单位:厘米)
    • TT(时间,1T100001 \leq T \leq 10000,单位:秒)

输出格式

对于每个测试用例,输出一行 NN 个实数,表示 TT 秒后每个小球最低点的高度(单位:米),保留两位小数,用空格分隔。

样例输入

2
1 10 10 100
2 10 10 100

样例输出

4.95
4.95 10.20

题目来源

POJ Founder Monthly Contest – 2008.08.31, Simon


关键点说明

  1. 物理模型
    • 小球自由落体时间 tfall=2Hgt_{\text{fall}} = \sqrt{\frac{2H}{g}},周期 Tbounce=2tfallT_{\text{bounce}} = 2t_{\text{fall}}
    • 时间 TT 后的高度 hh 可通过周期性运动计算:$$h = H - \frac{1}{2}g \left(T \bmod T_{\text{bounce}} - t_{\text{fall}}\right)^2 \quad \text{(反弹阶段)} $$
  2. 碰撞处理
    • 两球相撞仅需交换速度,无需计算动量(因质量相同)。
  3. 半径转换
    • 输入中的 RR 为厘米,需转换为米(R0.01RR \gets 0.01R)参与计算。
  4. 输出精度
    • 结果需四舍五入到两位小数。