fork download
  1. double D(m,k)double*m;
  2. {
  3. double t=0;
  4. for(int s=1,b=1,x=0;x<6;x++,b+=b)k&b||(t+=s*m[x]*(k+b>62?1:D(m+6,k+b)),s=-s);
  5. return t;
  6. }
  7. i,u,h;
  8. double m[36],*t=m+6,w[6],s[3],b,d;
  9. main(){
  10. for(;i++<5;*t++=d*d,*t++=d*b,*t++=b*b,*t++=d,*t++=b,*t++=1)
  11. scanf("%lf%lf",&d,&b);
  12. for(u=4;u;u/=2)
  13. for(m[0]=u&1,m[1]=u&2,m[2]=u&4,
  14. d=D(m,0),h=0;
  15. d&&h<3;
  16. h++)
  17. {
  18. for(i=0;i<6;i++)w[i]=m[i*6+h],m[i*6+h]=i?0:u;
  19. s[h]=D(m,0)/d;
  20. for(;i--;)m[i*6+h]=w[i];
  21. }
  22. b=s[1];d=b*b-4*s[0]*s[2];
  23. puts(d?d<0?!b&(s[2]==s[0])?"Circle":"Ellipse":"Hyperbola":"Parabola");
  24. }
Success #stdin #stdout 0s 2116KB
stdin
1.2 5.3 4.1 5.6 9.1 2.5 0 1 4.2 0 E
//1 0 0 1 2 1 3 4 4 9 P
stdout
Ellipse