hdu 2394 Johnny and the Quadratic Equation

hdu 2394 Johnny and the Quadratic Equation

对于一个二次方程a*x*x+b*x+c==0(%2^32) 给出a,b,c 问 能否找到这个x;开始想复杂了,把x各种设2^..p1^..p2^..p3^..,其实只要进行可以使分解2继续下去的x的奇偶讨论即可.

如果x=2*k 各种除以2,如果x=2*k+1,关键来了,对于这个新变量k,作为下一个讨论的对象,化简后表示成  A*k^2+B*k+C 进行下一轮 当消到32个2时 表示KO了 注意几个false的情况即可 .

View Code
 1 while(true)
2 {
3 //cout<<a<<" "<<b<<" "<<" "<<c<<endl;
4 //system("PAUSE");
5 if(!(c%2))
6 {
7 //cout<<"~~~"<<endl;
8 if((b%2)||(a%2))
9 {
10 a*=2;
11 c/=2;
12 }
13 else
14 {
15 a/=2;b/=2;c/=2;
16 }
17 k--;
18 if(k==0)
19 {
20 break;
21 }
22 }
23 else
24 {
25 //cout<<"----"<<endl;
26 if(a%2==0&&b%2==0){temp=false;break;}
27 if(a%2==1&&b%2==1){temp=false;break;}
28 LL a1=a*2;
29 LL b1=2*a+b;
30 LL c1=(a+b+c)/2;
31 a=a1;b=b1;c=c1;
32 k--;
33 if(k==0)
34 {
35 break;
36 }
37 }
38
39 }
40 if(temp) cout<<"YES"<<endl;
41 else cout<<"NO"<<endl;



posted on 2011-10-15 11:27  yaoz10051538  阅读(288)  评论(2编辑  收藏  举报

导航