TJU 3513. Triangle
This problem require effort to tackle Precision errors
ACCEPTED
My AC code
//precision error upto 5 digits after decimal taken //ACCEPTED #include<iostream> #include<stdio.h> #include<stdlib.h> #include<cstring> #include<algorithm> #include<vector> #include<cmath> using namespace std; int main() { long double PI=3.14159265/2.000000000,PI2=3.14159265; PI=(int)(PI*100000);PI2=(int)(PI2*100000); PI/=100000;PI2/=100000; //cout<<PI<<endl; int x1,y1,x2,y2,x3,y3; int cases,k=0; cin>>cases; while(cases--){ cin>>x1>>y1>>x2>>y2>>x3>>y3; long double a,b,c; a=sqrt(pow((x1-x2),2.00000)+pow((y1-y2),2.00000)); b=sqrt(pow((x2-x3),2.00000)+pow((y2-y3),2.00000)); c=sqrt(pow((x3-x1),2.00000)+pow((y3-y1),2.00000)); long double A,B,C; A=acos((b*b+c*c-a*a)/(2.00000*b*c)); B=acos((a*a+c*c-b*b)/(2.00000*a*c)); C=acos((b*b+a*a-c*c)/(2.00000*b*a)); A=(int)(A*100000); B=(int)(B*100000); C=(int)(C*100000); A/=100000;B/=100000;C/=100000; //cout<<A<<" "<<B<<" "<<C<<endl; printf("Case #%d: ",++k); if(x1==x2&&y1==y2||x2==x3&&y2==y3||x3==x1&&y3==y1||A==0.00000||B==0.00000||C==0.00000||A==PI2||B==PI2||C==PI2) printf("not a triangle\n"); else if(A<PI&&B<PI&&C<PI){ if(a==b&&b!=c||b==c&&b!=a||c==a&&a!=b) printf("isosceles acute triangle\n"); else if(a!=b&&b!=c&&c!=a) printf("scalene acute triangle\n"); } else if(A==PI||B==PI||C==PI){ if(a==b&&b!=c||b==c&&b!=a||c==a&&a!=b) printf("isosceles right triangle\n"); else if(a!=b&&b!=c&&c!=a) printf("scalene right triangle\n"); } else if(A>PI||B>PI||C>PI){ if(a==b&&b!=c||b==c&&b!=a||c==a&&a!=b) printf("isosceles obtuse triangle\n"); else if(a!=b&&b!=c&&c!=a) printf("scalene obtuse triangle\n"); } } return 0; }
second version(AC)
finding “pi”