poj 3684 Physics Experiment 弹性碰撞
Time Limit: 1000MS | Memory Limit: 65536K | |||
Total Submissions: 1489 | Accepted: 509 | Special Judge |
Description
Simon is doing a physics experiment with N identical balls with the same radius of R centimeters. Before the experiment, all N balls are fastened within a vertical tube one by one and the lowest point of the lowest ball is H meters 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 balls are released one by one in every second until all balls have been released. When a ball hits the ground, it will bounce back with the same speed as it hits the ground. When two balls hit each other, they with exchange their velocities (both speed and direction).
Simon wants to know where are the N balls after T seconds. Can you help him?
In this problem, you can assume that the gravity is constant: g = 10 m/s2.
Input
The first line of the input contains one integer C (C ≤ 20) indicating the number of test cases. Each of the following lines contains four integers N, H, R, T.
1≤ N ≤ 100.
1≤ H ≤ 10000
1≤ R ≤ 100
1≤ T ≤ 10000
Output
For each test case, your program should output N real numbers indicating the height in meters of the lowest point of each ball separated by a single space in a single line. Each number should be rounded to 2 digit after the decimal point.
Sample Input
2
1 10 10 100
2 10 10 100
Sample Output
4.95
4.95 10.20
Source
#include<cstdio>
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <vector>
#include <queue>
#include<map>
#include <algorithm>
#include <set>
using namespace std;
#define MM(a) memset(a,0,sizeof(a))
typedef long long LL;
typedef unsigned long long ULL;
const int mod = ;
const double eps = 1e-;
const int inf = 0x3f3f3f3f;
const double g=;
int cas,n,h,r,t,k;
double t0,tx,a[],temp;
double solve(int x)
{
if(x<) return h;
t0=sqrt(*h*1.0/g);
k=int(x/t0);
if(k%==) temp=x-k*t0;
else temp=t0-(x-k*t0);
return h-0.5*g*temp*temp;
}
int main()
{
cin>>cas;
while(cas--)
{
scanf("%d %d %d %d",&n,&h,&r,&t);
for(int i=;i<=n;i++)
a[i]=solve(t-(i-));
sort(a+,a+n+);
for(int i=;i<=n;i++)
printf("%.2f%c",a[i]+*(i-)*r/100.0,i==n?'\n':' ');//注意%s输出字符串,%c输出字符,所以这个地方不能用“”
} //因为%c无法输出“”字符串
return ;
}
最新文章
- 调用微信JsAPI端获取位置
- 安装Jenkins
- python-day02数据类型-字符串和列表的操作
- 2016.9.18 --- Shenyang ol
- iOS的第一个习作
- ado通用操作数据单元
- CSS基础-引入方法,选择器,继承
- IOS深入学习(4)之Coordinate System
- Linux系统编程(6)——文件系统
- Change the ball--hdu2277
- Java多线程父子线程关系 多线程中篇(六)
- INotifyPropertyChanged
- TOJ3448: 小学生的作业
- pyqt5-基础
- office 2016 install(office2016组件自定义安装激活程序) v5.9.3中文绿色版
- 【ActiveMQ入门-8】ActiveMQ学习-与Spring集成
- Spring Boot中使用缓存
- Java中的条件运算符
- jdbc学习笔记02
- 工作总结 string类型保存 ";"; 这种类型
热门文章
- servlet_cdi自动注入
- Chrome的cookie放在哪里了,Cookie/Session机制详解
- Head First PHP&;MySQl第一章代码
- 版本控制器之SVN(二)
- java检测是不是移动端访问
- Collection接口的子接口——Set接口
- Redis安全策略
- C# 面向对象5 this关键字和析构函数
- 数据绑定-@RequestParam
- resulting in duplicate entry &#39;1&#39; for key &#39;primary&#39;