POJ3684 Physics Experiment [physical], poj4244experiment
Physics Experiment
Time Limit:1000 MS |
|
Memory Limit:65536 K |
Total Submissions:1031 |
|
Accepted:365 |
|
Special Judge |
Description
Simon is doing a physics experimentNIdentical bils with the same radiusRCentimeters. Before the experiment, allNBils are fastened within a vertical tube one by one and the lowest point of the lowest ball isHMeters above the ground. at beginning of the experiment, (at second 0), the first ball is released and falls down due to the gravity. after that, the bils are released one by one in every second until all bils have been released. when a ball hits the ground, it will bounce back with the same speed as it hits the ground. when two bils hit each other, they with exchange their velocities (both speed and direction ).
Simon wants to know where areNBallafterTSeconds. Can you help him?
In this problem, you can assume that the gravity is constant:G= 10M/S2.
Input
The first line of the input contains one integerC(C≤ 20) indicating the number of test cases. Each of the following lines contains four integersN,H,R,T.
1 ≤ N ≤100.
1 ≤ h≤10000
1 ≤ R ≤100
1 ≤ T ≤10000
Output
For each test case, your program shocould outputNReal numbers indicating the height in meters of the lowest point of each ball separated by a single space in a single line. Each number shocould be rounded to 2 digit after the decimal point.
Sample Input
21 10 10 1002 10 10 100
Sample Output
4.954.95 10.20
Source
POJ Founder Monthly Contest-2008.08.31, Simon
/*** Problem: POJ3684 ** Status: Accepted ** Running Time: 0 ms ** Author: Changmu *** question: Is my first physics question, the meaning of the question is that N balls are stacked together, and the bottom ball is dropped every second **. The bottom height of the bottom ball is given, calculate the height of the base of each ball after T seconds, g = 10 Mb/s ^ 2. * ** question: because the speed of the two balls is exchanged during the collision, it can be seen that the two balls have crossed each other, But ** the order of the balls will not change, therefore, after the obtained results are sorted, they are the answers. */# Include <stdio. h> # include <string. h> # include <math. h >#include <algorithm> # define maxn 105 const double g = 10.0; int N, H, R, T; double Y [maxn]; double cal (int k) {if (k <0) return H; double t = (double) sqrt (2.0 * H/g); int m = (int) (k/t ); if (m & 1) {double t1 = (m + 1) * t-k; return H-g * t1 * t1/2 ;} else {double t1 = k-m * t; return H-g * t1 * t1/2;} int main () {int t, I; sca Nf ("% d", & t); while (t --) {scanf ("% d", & N, & H, & R, & T); for (I = 0; I <N; ++ I) Y [I] = cal (T-I); std: sort (Y, Y + N); for (I = 0; I <N; ++ I) printf ("%. 2lf % c ", Y [I] + 2.0 * R * I/100.0, I = N-1? '\ N': '');} return 0 ;}