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;
}