無限的路 hd 2073

q923714892發表於2020-04-06
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

#include<stdio.h>
#include<math.h>
int main()
{
double n,a,b,c,d,j;
double sum,sam,k,i;
scanf("%lf",&n);
while(n--)
{
sum=0;
sam=0;
scanf("%lf%lf%lf%lf",&a,&b,&c,&d);
for(i=0;i<a+b;i++)
{
sum=sum+sqrt((double)i*i+(i+1)*(i+1));
}
for(j=1;j<a+b;j++)
{
sum=sum+j*sqrt((double)2);
}
sum=sum+a*sqrt((double)2);
for(i=0;i<c+d;i++)
{
sam=sam+sqrt((double)i*i+(i+1)*(i+1));
}
for(j=1;j<c+d;j++)
{
sam=sam+j*sqrt((double)2);
}
sam=sam+c*sqrt((double)2);
k=fabs(sam-sum);
printf("%.3lf\n",k);
}
}


相關文章