hdu2080夹角有多大II

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值