HDU 2073:无限的路【模拟】
2016-03-13 17:08
218 查看
无限的路
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 7615 Accepted Submission(s): 3921
Problem Description
甜甜从小就喜欢画图画,最近他买了一支智能画笔,由于刚刚接触,所以甜甜只会用它来画直线,于是他就在平面直角坐标系中画出如下的图形:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/20/b9adb1110ae8404ef5c5425e28c0b940.jpg)
甜甜的好朋友蜜蜜发现上面的图还是有点规则的,于是他问甜甜:在你画的图中,我给你两个点,请你算一算连接两点的折线长度(即沿折线走的路线长度)吧。
Input
第一个数是正整数N(≤100)。代表数据的组数。
每组数据由四个非负整数组成x1,y1,x2,y2;所有的数都不会大于100。
Output
对于每组数据,输出两点(x1,y1),(x2,y2)之间的折线距离。注意输出结果精确到小数点后3位。
Sample Input
5
0 0 0 1
0 0 1 0
2 3 3 1
99 99 9 9
5 5 5 5
Sample Output
1.000
2.414
10.646
54985.047
0.000
AC-code:
#include<cstdio> #include<iostream> #include<cmath> using namespace std; int main() { int T,x1,x2,y1,y2; double ans; scanf("%d",&T); while(T--) { scanf("%d%d%d%d",&x1,&y1,&x2,&y2); if((x1+y1>x2+y2)||(x1+y1==x2+y2&&x1>x2)) { swap(x1,x2); swap(y1,y2); } ans=0; while(1) { if(x1==x2&&y1==y2) break; else if(y1==0) { ans+=sqrt(x1*x1+(x1+1)*(x1+1)); y1=x1+1; x1=0; } else { ans+=sqrt(2); x1++; y1--; } } printf("%.3lf\n",ans); } return 0; }
相关文章推荐
- 快来给宝宝打分
- 使用javascript为网页增加夜间模式
- Pku oj 1573 Robot Motion(模拟)
- 在JDBC中使用PreparedStatement代替Statement,同时预防SQL注入
- 构建一个简单的Linux系统 MenuOs —— start_kernel到init进程(20135304刘世鹏)
- 第一周笔记
- 第一周学习感想和以往回顾
- plsa(Probabilistic Latent Semantic Analysis) 概率隐语义分析
- 第一讲: 软考中高项01_信息基础+服务管理
- c++第2次实验(循环)
- Windows系统下安装Ubuntu虚拟机
- 《Java程序设计》第二周学习总结
- IDEA社区版使用Maven + Tomcat开发Web项目
- 第一次上机实验1-2
- Git使用教程
- MySQL索引
- 20145329 吉东云《Java程序设计》第二周学习总结
- 最小生成树--kruskal
- linux用户和权限管理
- QT5中文显示出现乱码