delete pics to save space
This commit is contained in:
48
2.11817.cpp
Normal file
48
2.11817.cpp
Normal file
@ -0,0 +1,48 @@
|
||||
#include<cstdio>
|
||||
#include<cmath>
|
||||
struct Point3
|
||||
{
|
||||
double x,y,z;
|
||||
Point3(double _x=0,double _y=0,double _z=0):x(_x),y(_y),z(_z) { }
|
||||
};
|
||||
Point3 operator-(Point3 A,Point3 B)
|
||||
{ return Point3(A.x-B.x,A.y-B.y,A.z-B.z); }
|
||||
double Length(Point3 p)
|
||||
{ return sqrt(p.x*p.x+p.y*p.y+p.z*p.z); }
|
||||
|
||||
const double Pi=acos(-1);
|
||||
inline double D_to_R(double D)
|
||||
{ return Pi/180*D; }
|
||||
void get_coord(double R,double lat,double lng,Point3 &p)
|
||||
{
|
||||
lat=D_to_R(lat);
|
||||
lng=D_to_R(lng);
|
||||
p.x=R*cos(lat)*cos(lng);
|
||||
p.y=R*cos(lat)*sin(lng);
|
||||
p.z=R*sin(lat);
|
||||
}
|
||||
using namespace std;
|
||||
int n;
|
||||
double lat1,lng1,lat2,lng2;
|
||||
const double R=6371009;
|
||||
int main()
|
||||
{
|
||||
#ifdef local
|
||||
freopen("pro.in","r",stdin);
|
||||
#endif
|
||||
scanf("%d",&n);
|
||||
while(n-->0)
|
||||
{
|
||||
scanf("%lf%lf%lf%lf",&lat1,&lng1,&lat2,&lng2);
|
||||
if(lat1<0) lat1+=360;
|
||||
if(lng1<0) lng1+=360;
|
||||
if(lat2<0) lat2+=360;
|
||||
if(lng2<0) lng2+=360;
|
||||
Point3 A,B;
|
||||
get_coord(R,lat1,lng1,A);
|
||||
get_coord(R,lat2,lng2,B);
|
||||
double d=Length(A-B);
|
||||
printf("%.0lf\n",2*asin(d/(2*R))*R-d);
|
||||
}
|
||||
return 0;
|
||||
}
|
Reference in New Issue
Block a user