UVA11817
来源:互联网 发布:肯特大学 知乎 编辑:程序博客网 时间:2024/05/01 18:43
做这道题目做到吐血~
#include <cstdio>#include <cstdlib>#include <cmath>#include <cstring>#include <iostream>#include <algorithm>#include <map>#include <set>#include <queue>using namespace std;const double r=6371009;const double pi=atan(1.0)*4;struct Point3{ double x,y,z; Point3(double x=0,double y=0,double z=0):x(x),y(y),z(z){}};typedef Point3 Vector3;/*Vector3 operator + (Vector3 A,Vector3 B){ return Vector3(A.x+B.x,A.y+B.y,A.z+B.z);}Vector3 operator - (Vector3 A,Vector3 B){ return Vector3(A.x-B.x,A.y-B.y,A.z-B.z);}Vector3 operator /(Vector3 A,double p){ return Vector3(A.x/p,A.y/p,A.z/p);}Vector3 operator *(Vector3 A,double p){ return Vector3 (A.x*p, A.y*p,A.z*p);}double Dot(Vector3 A,Vector3 B){ return A.x*B.x+A.y*B.y+A.z*B.z;}double length(Vector3 A){ return sqrt(Dot(A,A) );}Point3 get_corrd(double a,double b){ Point3 p; p.x=r*cos(a)*cos(b); p.y=r*cos(a)*sin(b); p.z=r*sin(a); return p;}*/Vector3 operator +(Vector3 A,Vector3 B){return Vector3(A.x+B.x,A.y+B.y,A.z+B.z);}Vector3 operator -(Vector3 A,Vector3 B){return Vector3(A.x-B.x,A.y-B.y,A.z-B.z);}Vector3 operator *(Vector3 A,double p){return Vector3(A.x*p,A.y*p,A.z*p);}Vector3 operator /(Vector3 A,double p){return Vector3(A.x/p,A.y/p,A.z/p);}double Dot(Vector3 A,Vector3 B){return A.x*B.x+A.y*B.y+A.z*B.z;}//点积double Length(Vector3 A){return sqrt(Dot(A,A));}Point3 get_point(double a,double b){ Point3 p; p.x=r*cos(a)*cos(b); p.y=r*cos(a)*sin(b); p.z=r*sin(a); return p;}int main(){ int n; scanf("%d",&n); while(n--) { double e[4]; for(int i=0;i<4;i++) { scanf("%lf",&e[i]); e[i]=e[i]/180.0*pi; } Point3 a,b; a=get_point(e[0],e[1]); b=get_point(e[2],e[3]); double s1=Length(a-b); double s2=asin(s1/(2.0*r))*2*r; // cout<<s1<<" "<<s2<<" "<<endl; printf("%d\n",(int )(s2-s1+0.5) ); } return 0;}/*int main(){ int T; scanf("%d",&T); while(T--) { 1double e[4]; for(int i=0;i<4;i++) { //输入纬度和经度 scanf("%lf",&e[i]); e[i]=e[i]/180.0*pi; } Point3 a,b; a=get_point(e[0],e[1]); b=get_point(e[2],e[3]); double s1=Length(a-b); double s2=asin(s1/(2.0*r))*2*r; printf("%d\n",(int)(s2-s1+0.5)); } return 0;}*/首先,评论一下自己哪里错了,可以这么说,该打括号的地方,全部没有打括号,所以自己做了好久好久~
都哭了~
(int)后面必须打括号呀~
s1/2*r这个地方也没有打括号~
自己真是,越活越蠢了。><
0 0