无限的路

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 7362    Accepted Submission(s): 3785

 

 

Problem Description

甜甜从小就喜欢画图画,最近他买了一支智能画笔,由于刚刚接触,所以甜甜只会用它来画直线,于是他就在平面直角坐标系中画出如下的图形:

            

 

 

甜甜的好朋友蜜蜜发现上面的图还是有点规则的,于是他问甜甜:在你画的图中,我给你两个点,请你算一算连接两点的折线长度(即沿折线走的路线长度)吧。

 

 

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

 

 

Author

Lily

 

 

Source

浙江工业大学网络选拔赛

 

 

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cmath>
 4 using namespace std;
 5 const double p=sqrt(2);
 6 int main()
 7 {
 8     int t;
 9     cin>>t;
10     int x,y;
11     double m;
12     double a[210];
13     a[0]=0;a[1]=1;
14     for(int i=2;i<210;i++) a[i]=sqrt(i*i+(i-1)*(i-1));
15     while(t--){
16         double l1=0,l2=0;
17         cin>>x>>y;
18         if(x==y){
19             for(int i=1;i<=x+y;i++){
20                 l1+=a[i]+p*i;
21             }
22             l1-=p*x;
23         }
24         else if(x>y){
25             for(int i=1;i<=x+y;i++){
26                 l1+=a[i]+p*i;
27             }
28             l1-=sqrt(2*y*y);
29         }
30         else if(x<y){
31             for(int i=1;i<=x+y;i++){
32                 l1+=a[i]+p*i;
33             }
34             l1-=sqrt(2*y*y);
35         }
36         cin>>x>>y;
37         if(x==y){
38             for(int i=1;i<=x+y;i++){
39                 l2+=a[i]+p*i;
40             }
41             l2-=p*x;
42         }
43         else if(x>y){
44             for(int i=1;i<=x+y;i++){
45                 l2+=a[i]+p*i;
46             }
47             l2-=sqrt(2*y*y);
48         }
49         else if(x<y){
50             for(int i=1;i<=x+y;i++){
51                 l2+=a[i]+p*i;
52             }
53             l2-=sqrt(2*y*y);
54         }
55         //cout<<l1<<" "<<l2<<endl;
56         double m=fabs(l1-l2);
57         printf("%.3f\n",m);
58     }
59     return 0;
60 }

 

posted on 2016-01-28 00:42  Sunny糖果  阅读(134)  评论(0编辑  收藏  举报