这次xhd面临的问题是这样的:在一个平面内有两个点,求两个点分别和原点的连线的夹角的大小。 注:夹角的范围[0,180],两个点不会在圆心出现。 |
输入数据的第一行是一个数据T,表示有T组数据。 每组数据有四个实数x1,y1,x2,y2分别表示两个点的坐标,这些实数的范围是[-10000,10000]。 |
对于每组输入数据,输出夹角的大小精确到小数点后两位。 |
2 1 1 2 2 1 1 1 0 |
0.00 45.00 |
代码实现:
#include <math.h>
#include <stdio.h>
int main(void)
{
int n;
double x[2], y[2], t;
scanf("%d", &n);
while (n-- && scanf("%lf%lf%lf%lf", x, y, x+1, y+1))
printf("%.2f\n", (t=asin(fabs(x[0]*y[1]-x[1]*y[0])/sqrt(x[0]*x[0]+y[0]*y[0])/sqrt(x[1]*x[1]+y[1]*y[1]))/acos(-1)*180)?x[0]*x[1]<=0&&y[0]*y[1]<=0?180-t:t:x[0]*x[1]<0?180:0);
return 0;
}