poj 1675(数学,注意原点和共线,共线是原点同侧)

时间:2021-07-30
本文章向大家介绍poj 1675(数学,注意原点和共线,共线是原点同侧),主要包括poj 1675(数学,注意原点和共线,共线是原点同侧)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
#include<iostream>
#include<cstdio>
#include<cmath>
#define PI 3.1415927
using namespace std;
double a,b,c,tmp = acos(-1.0/2)*180/PI,x[4],y[4];
bool yuandian(){
    for(int i=1;i<=3;i++){
        if(x[i]==0&&y[i]==0){
            return true;
        }
    }
    return false;
}
bool gongxian(){
    for(int i=1;i<=2;i++){
        for(int j=i+1;j<=3;j++){
            if(x[i]*y[j]==x[j]*y[i]&&x[i]*x[j]+y[i]*y[j]>=0){
                return true;
            }
        }
    }
    return false;
}
bool qiefen(){
    double a[4];
    for(int i=1;i<=3;){
        for(int j=1;j<=2;j++){
            for(int k=j+1;k<=3;k++){
                a[i] = acos((double)(x[j]*x[k]+y[j]*y[k])/sqrt((double)(x[j]*x[j]+y[j]*y[j]))/sqrt((double)(x[k]*x[k]+y[k]*y[k])))*180/PI;
                if(a[i]>120)return false;
                i++; 
            }
        }
    }
    return true;
} 
using namespace std;
int main(){
    int t,r;
    scanf("%d",&t);
    while(t--){
        scanf("%d",&r);
        for(int i=1;i<=3;i++){
            scanf("%lf%lf",&x[i],&y[i]);
        }
        if(yuandian()||gongxian()||qiefen()){
            printf("No\n");
        }
        else{
            printf("Yes\n");
        }
    }
    return 0;
} 

原文地址:https://www.cnblogs.com/stevenzrx/p/15079419.html