本次题目都很简单,只是简单记一下我翻车的题目
题目描述
在另一个位面,世界末日发生了。东东作为诺亚方舟的船长,他现在从月球开始启动诺亚方舟去其他星球营救民众。东东从若干星球将人运回大本营,星球的数目以及每个星球的坐标和人数都将由输入决定,东东忙着开船,需要你帮忙求出所有人都到达月球并登陆所用的时间。在直角坐标系的原点是月球,诺亚方舟每次从大本营出发,救了人之后将人送回月球。坐标系中的点代表某个星球。每个屋顶由其位置坐标和其上的人数表示。
诺亚方舟每次从大本营出发,以速度
50
50
50 km/s驶向下一个星球。达到一个星球后,救下其上的所有人,每人上船
1
1
1 s。然后船原路返回,回到月球,每人下船
0.5
0.5
0.5 s。假设原点与任意一个星球的连线不穿过其它星球。
输入格式:
第一行,一个整数,表示星球数1<=n<=100。
接下来依次有 n行输入,每一行前两个实数表示星球相对于月球的平面坐标位置 (x_i,y_i)(单位是km)、然后一个表示人数的整数 r_i,数之间以一个空格分开。0<=x_i,y_i<=100;
输出格式
一行,救援需要的总时间,精确到秒 (向上取整)。
Sample Input
1
30 40 3
Sample Output
7
代码实现
#include<cstdio>
#include<cmath>
using namespace std;
int main(){
int n,p;
double tm=0.,x,y;
scanf("%d",&n);
for(int i=0;i<n;i++){
int p;
scanf("%lf%lf%d",&x,&y,&p);
tm+=sqrt(x*x+y*y)/25.0+p*1.5;
}
int res=ceil(tm);
printf("%d",res);
return 0;
}
题后反思
记录时间的变量tm要是double,如果定义为int型想着对时间累加过程中就直接调用ceil求出每一次累加的向上取整的值,这样是不对的!正确思路应该是求出double型的最终值,在最后一步进行转换!