http://acm.hdu.edu.cn/showproblem.php?pid=2080
就是一道数学题目,然后调用了反三角函数,考虑四个坐标系的情况,考虑清楚即可
#include "stdio.h" #include "string.h" #include "stdlib.h" #include "math.h" #include "algorithm" #include "iostream" using namespace std; #define PI 3.1415926 int main() { int n ; double x1 , y1 , x2 , y2 , tempa ,tempb , temp; scanf( "%d" , &n ); { while( n-- ) { scanf( "%lf%lf%lf%lf" ,&x1 , &y1 , &x2 , &y2 ) ; // cout << x1 << y1 << x2 << y2 ; if( x1 * x2 > 0 && y1 * y2 >= 0 ) { tempa = atan( y1 / x1 ) ; tempb = atan( y2 / x2 ) ; temp = fabs( tempa - tempb ) ; //cout << tempa << endl << tempb << endl << temp <<endl ; } else if( x1 * x2 > 0 && y1 * y2 <= 0 ) { y1 = fabs( y1 ) ; y2 = fabs( y2 ) ; tempa = atan( y1 / x1 ); tempb = atan( y2 / x2 ) ; temp = tempa + tempb ; } else if( x1 * x2 < 0 && y1 * y2 >= 0 ) { x1 = fabs( x1 ) ; x2 = fabs( x2 ) ; tempa = atan( y1 / x1 ) ; tempb = atan( y2 / x2 ) ; temp = PI - fabs( tempa - tempb ); } else if( x1 * x2 < 0 && y1 * y2 <= 0 ) { x1 = fabs( x1 ) ; x2 = fabs( x2 ) ; y1 = fabs( y1 ) ; y2 = fabs( y2 ) ; tempa = atan( y1 / x1 ) ; tempb = atan( y2 / x2 ) ; temp = PI + fabs( tempa - tempb ) ; } printf( "%.2lf\n" , temp * 180 /PI ) ; } } return 0; }