夹角有多大II
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4349 Accepted Submission(s): 2073
Problem Description
这次xhd面临的问题是这样的:在一个平面内有两个点,求两个点分别和原点的连线的夹角的大小。 注:夹角的范围[0,180],两个点不会在圆心出现。
Input
输入数据的第一行是一个数据T,表示有T组数据。 每组数据有四个实数x1,y1,x2,y2分别表示两个点的坐标,这些实数的范围是[-10000,10000]。
Output
对于每组输入数据,输出夹角的大小精确到小数点后两位。
Sample Input
2 1 1 2 2 1 1 1 0
Sample Output
0.00 45.00
Author
xhd
Source
Recommend
lcy
(sin)等于对边比斜边; 余弦(cos)等于邻边比斜边; 正切(tan)等于对边比邻边; (cot)等于邻边比对边; (sec)等于斜边比邻边; (csc)等于斜边比对边。
余弦定理: cosA=(b*b+c*c-a*a)/2*b*c cmath函数中,三角函数表示的是弧度,如果要变成角度,要加上angle=acos()/PI*180 函数说明: using ::abs; //绝对值 using ::acos; //反余弦 using ::acosf; //反余弦 using ::acosl; //反余弦 using ::asin; //反正弦 using ::asinf; //反正弦 using ::asinl; //反正弦 using ::atan; //反正切 using ::atan2; //y/x的反正切 using ::atan2f; //y/x的反正切 using ::atan2l; //y/x的反正切 using ::atanf; //反正切 using ::atanl; //反正切 using ::ceil; //上取整 using ::ceilf; //上取整 using ::ceill; //上取整 using ::cos; //余弦 using ::cosf; //余弦 using ::cosh; //双曲余弦 using ::coshf; //双曲余弦 using ::coshl; //双曲余弦 using ::cosl; //余弦 using ::exp; //指数值 using ::expf; //指数值 using ::expl; //指数值 using ::fabs; //绝对值 using ::fabsf; //绝对值 using ::fabsl; //绝对值 using ::floor; //下取整 using ::floorf; //下取整 using ::floorl; //下取整 using ::fmod; //求余 using ::fmodf; //求余 using ::fmodl; //求余 using ::frexp; //返回value=x*2n中x的值,n存贮在eptr中 using ::frexpf; //返回value=x*2n中x的值,n存贮在eptr中 using ::frexpl; //返回value=x*2n中x的值,n存贮在eptr中 using ::ldexp; //返回value*2exp的值 using ::ldexpf; //返回value*2exp的值 using ::ldexpl; //返回value*2exp的值 using ::log; //对数 using ::log10; //对数 using ::log10f; //对数 using ::log10l; //对数 using ::logf; //对数 using ::logl; //对数 using ::modf; //将双精度数value分解成尾数和阶 using ::modff; //将双精度数value分解成尾数和阶 using ::modfl; //将双精度数value分解成尾数和阶 using ::pow; //计算幂 using ::powf; //计算幂 using ::powl; //计算幂 using ::sin; //正弦 using ::sinf; //正弦 using ::sinh; //双曲正弦 using ::sinhf; //双曲正弦 using ::sinhl; //双曲正弦 using ::sinl; //正弦 using ::sqrt; //开方 using ::sqrtf; //开方 using ::sqrtl; //开方 using ::tan; //正切 using ::tanf; //正切 using ::tanh; //双曲正切 using ::tanhf; //双曲正切 using ::tanhl; //双曲正切 using ::tanl; //正切
1 #include2 #include 3 using namespace std; 4 #define PI 3.141592654 5 int main() 6 { 7 int n; 8 double x1,y1,x2,y2; 9 double a,b,c;10 double angle;11 while(~scanf("%d",&n))12 {13 while(n--)14 {15 scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2);16 a=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));17 b=sqrt(x1*x1+y1*y1);18 c=sqrt(x2*x2+y2*y2);19 angle=acos((x1*x1+y1*y1+x2*x2+y2*y2-((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)))/(2.0*b*c))/PI*180;20 printf("%.2f\n",angle);21 }22 }23 return 0;24 }