#include <stdio.h>
#include <math.h>
int main()
{
int n,i,x1,y1,x2,y2;
double u,v,s[201],a=0,ans,q1,q2;
//s[1]=1,a=1;
s[0]=0;
for(i=1;i<=200;i++){
u=i*i+(i-1)*(i-1);
v=2*i*i;
a=a+sqrt(u)+sqrt(v);
s[i]=a;
}
scanf("%d",&n);
while(n--){
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
q1=s[x1+y1]-y1*sqrt(2);
q2=s[x2+y2]-y2*sqrt(2);
ans=q1-q2;
if(ans<0)ans=-1*ans;
printf("%.3lf\n",ans);
}
return 0;
}求出原点到(x,0)的距离,每一个要求的点(x1,y1),都可以通过(x1+y1,0)这个点来表示,表示为lx1=lx-y1*根2
求任意两点间的距离则只需求出lx1-lx2
本文介绍了一个计算二维平面上从原点出发到特定坐标点路径长度的C语言程序。该程序利用数学公式计算从原点出发经过一系列格点到达目标点的最短路径长度,并能够比较两个不同终点之间的路径长度差异。
2583

被折叠的 条评论
为什么被折叠?



