
思路分析

1、根据题意以及给出的输入输出画出如上坐标分析图,x坐标30,y坐标40,它们跟从大本营到屋顶之间刚好形成了一个直角三角形,而且通过坐标就很容易联想到勾股定理,已知三角形两条边就可以求出第三边。
勾股定理如下:
a\^{2}+b\^{2}=c\^{2}
a边平方+b边平方=C边平方
\\sqrt{c}开根可得c边长
将x坐标和y坐标带入公式可得到从大本营到屋顶之间的总路程平方,接着将总路程平方进行开根号即可得到c边的大小。
2、得到总路程就可以求得路上花费的时间:c/50=路上时间
根据题意每人上船需要花费1分钟,下船需要花费0.5分钟,所以
路上时间+上船时间+下船时间=救援该屋顶的总时间
3、所以根据题意,输入需要救援的屋顶,然后把去该屋顶救援所花的时间计算出来,再输入下一个救援屋顶,依次类推。当把所有救援屋顶都输入完毕之后也是救援总时间计算出来之时。最后输出总救援时间即可。
1 #include<iostream>//C++库文件
2 #include<math.h>//数学库文件
3
4 //命名空间
5 using namespace std;
6 //主函数
7 int main()
8 {
9 /*n屋顶,x屋顶x坐标,y屋顶y坐标,
10 z从大本营到屋顶的距离,r人数,
11 fen从起点到屋顶上船下船的时间,ztime总时间*/
12 double n,x,y,z,r,fen,ztime=0;
13 cin>>n;//输入救援屋顶数
14 for(int i=1;i<=n;i++){
15 cin>>x>>y>>r;//循环输入要救援的屋顶x坐标,y坐标,r人数
16
17 z=x*x+y*y;//根据勾股定理求得从大本营到屋顶的总路程平方
18
19 z=sqrt(z);//开根总路程平方获得从大本营到屋顶的路程
20
21 fen=2*(z/50)+r+r*0.5;//计算去和回、上船、下船的时间
22
23 ztime=ztime+fen;//加上每个屋顶救援用的时间
24 }
25 cout<<ceil(ztime);//输出总时间向上取整
26 return 0;
27 }