#include<stdio.h> #include<math.h> /* 本题借鉴前辈的思路,主要分为三大块*/ /*第一块:两条直线均不垂直与x轴,如果两条直线斜率不相同,则一定相交,如果两条直线斜率相同且截段相同则重合即相交,否则评选*/ /*第二大块是两条直线均垂直与x轴,如果x3==x1,则两条直线的起始点一样,一定相交,否则平行*/ /*第三大块是其中一条直线垂直于x轴,另外一条直线不垂直于x轴,则一定相交*/ int main() { double x1,y1,x2,y2,x3,y3,x4,y4; while(scanf("%lf %lf %lf %lf",&x1,&y1,&x2,&y2)!=EOF)//注意double的标识为%lf,float的标识为%f { scanf("%lf %lf %lf %lf",&x3,&y3,&x4,&y4); double k1=0,k2=0; if(x2!=x1&&x4!=x3){ k1=1.0*(y2-y1)/(x2-x1); k2=1.0*(y4-y3)/(x4-x3); // printf("%.0lf%.0lf%.0lf%.0lf",x3,y3,x4,y4); if(k1!=k2){ printf("Yes\n"); } else{ if((y1-k1*x1)!=(y3-k2*x3)) { printf("No\n"); } else { printf("Yes\n"); } } } else if((x2==x1)&&(x4==x3)){ if(x1==x3) { printf("Yes\n"); } else { printf("No\n"); } } else{ printf("Yes\n"); } // int a,b,c,d; // a=x2-x1; // b=y2-y1; // c=x4-x3; // d=y4-y3; // if(b/a!=d/c||(b/a==d/c&&((y1-(b/a)*x1)==(y3-(d/c)*x3))))//如果斜率不相同或者斜率相同且b也相同 // { // printf("Yes\n"); // } // else//如果平行 // { // printf("No\n"); // } } return 0; } |
Double click to view unformatted code.