描述
小菜最喜欢吃香蕉啦!所以千万别在小菜面前提香蕉两字,不然他肯定缠着问你要,哈哈。What?“相交”也读作“香蕉”,好吧,那我们就慷慨点吧,来算算下面的问题有没有小菜喜欢的东西。
输入
每组数据为两行,包含8个整数,分别表示四个坐标,(X1,Y1)至(X4,Y4),0<=Xi,Yi<=1000,前两个坐标和后两个坐标分别确定一条直线,计算这两条直线是否相交?
输出
两条直线若相交,输出Yes,若不相交,输出No,每个实例输出为一行
输入样例 1
1 1 2 2
2 1 3 2
1 1 2 2
2 1 3 3
输出样例 1
No
Yes
#include<stdio.h>
int main(){
int x1,x2,x3,x4,y1,y2,y3,y4;
float f1,f2,f3,f4;
while(scanf("%d%d%d%d",&x1,&y1,&x2,&y2)!=EOF){
scanf("%d%d%d%d",&x3,&y3,&x4,&y4);
f1 = (y2-y1) * (x4-x3); //判断直线是否相交,利用平行两直线斜率相等
f2 = (x2-x1) * (y4-y3);
f3 = (y3-y1) * (x2-x1); //判断直线是否重合
f4 = (x3-x1) * (y2-y1);
if(f1==f2 && f3!=f4){
printf("No\n");
}else{
printf("Yes\n");
}
}
}