链接:http://poj.org/problem?id=3684
相同的球体,完全弹性碰撞。发生速度交换。所以,完全可以忽略球的碰撞,就当它去穿过处理就可以了
#include <iostream>
#include <cmath>
#include <algorithm>
#include <cstdio>
#define MAX_N 100
using namespace std;
const double g =10.0;
int N,H,R,T;
double y[MAX_N+5];
double calc(int T)
{
if(T<0) return H;
double t=sqrt(2*H/g);
int k=int (T/t);
if(k%2==0)
{
double d=T-k*t;
return H-g*d*d/2;
}
else
{
double d=k*t+t-T;
return H-g*d*d/2;
}
}
void solve()
{
for(int i=0;i<N;i++)
y[i]=calc(T-i);
sort(y,y+N);
for(int i=0;i<N;i++)
printf("%.2f%c",y[i]+2*R*i/100.0,i+1==N?'\n':' ');
}
int main()
{
int c;
cin>>c;
while(c--)
{
cin>>N>>H>>R>>T;
solve();
}
return 0;
}