Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 12844 | Accepted: 5703 |
Description
Input
Output
Sample Input
5 0 0 4 4 0 4 4 0 5 0 7 6 1 0 2 3 5 0 7 6 3 -6 4 -3 2 0 2 27 1 5 18 5 0 3 4 0 1 2 2 5
Sample Output
INTERSECTING LINES OUTPUT POINT 2.00 2.00 NONE LINE POINT 2.00 5.00 POINT 1.07 2.20 END OF OUTPUT
wawawa:
#include<iostream> #include<cstdio> #include<algorithm> #include<cmath> #include<cstring> #define geta(y1,y2)(y1-y2) #define getb(x1,x2)(x2-x1) #define getc(x1,x2,y1,y2)(x2*y1-x1*y2) //int gcd(int x,int y){return y==0?x:gcd(y,x%y);} int js(double &x,double &y){ int x1,x2,x3,x4,y1,y2,y3,y4; scanf("%d%d%d%d%d%d%d%d",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4); int a1,a2,b1,b2,c1,c2; a1=geta(y1,y2);b1=getb(x1,x2);c1=-getc(x1,y1,x2,y2); a2=geta(y3,y4);b2=getb(x3,x4);c2=-getc(x3,y3,x4,y4); //int t1=gcd(a1,gcd(b1,c1)),t2=gcd(a2,gcd(b2,c2)); // a1/=t1;b1/=t1;c1/=t1;a2/=t2;b2/=t2;c2/=t2; if(a1*b2==b1*a2){ if(a1*c2==a2*c1&&b1*c2==b2*c1)return 0; else return 1; } y=-1.0*(a2*c1-a1*c2)/(a2*b1-a1*b2); x=1.0*(b2*c1-b1*c2)/(a2*b1-a1*b2); return 2; } void input(int T,int cnt){ while(T--){ double x,y; int temp=js(x,y); if(temp==0)puts("LINE"); else if(temp==1)puts("NONE"); else printf("POINT %.2lf %.2lf\n",x,y);} } int main(){ int T; // while(~scanf("%d",&T)){ scanf("%d",&T); puts("INTERSECTING LINES OUTPUT"); input(T,0); puts("END OF OUTPUT"); // } return 0;}
原文:http://www.cnblogs.com/handsomecui/p/4922800.html