| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
求助大佬,帮忙看一下哪里错了import java.util.Arrays;
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double g = 10.0;
int count = sc.nextInt();
int index = 0;
while(index<count) {
int N = sc.nextInt(); //球个数
int H = sc.nextInt(); //高度
int R = sc.nextInt(); //半径
int T = sc.nextInt(); //时间
double[] wz = new double[N]; //每个球的位置
if(T < 0) {
for(int i =0 ; i < N; i++)
System.out.printf("%.2f ",H+2*R*i/100.0);
index++;
continue;
}
for(int i = 0; i < N; i++) { //遍历每个球
int Ti = T - i; //每个球的所拥有的总时间不一样。因为隔一秒下落一个
double h = H;// + 2*R
double t = Math.sqrt(2*h/g);
int k = (int)(Ti / t); //往返了多少次
//System.out.println("Ti:"+Ti+" h:"+h+" t:"+t+" k:"+k);
if(k%2==0) { //为偶数说明一个来回,且当前在下降
wz[i] = h - g*(Ti - k*t)*(Ti - k*t)/2; //g*(Ti - k*t)*(Ti - k*t)/2算的是下落的距离,问的是离地面的距离
}else { //为偶数说明没完成一个来回,且当前在上升
//此时的位置可以假设是从上面初速度为0掉下来的,时间就是kt+t-Ti 算出来是下落的距离
wz[i] = h - g*(k*t + t - Ti)*(k*t + t - Ti)/2;
}
}
index++;
Arrays.sort(wz);
for(int i = 0; i < N; i++) { //打印输出
System.out.printf("%.2f ",wz[i]+2*R*i/100.0);
}
}
}
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator