http://acm.hdu.edu.cn/showproblem.php?pid=2092
9 15 5 4 1 -56 0 0
No Yes Yes
这道题用个循环过了,可是还是WA了好几次,只应循环条件给弄错了;
正确代码如下:
#include<iostream> using namespace std; int main(){ long n,m,i; while(cin>>n>>m ){ if(n==0 && m==0) break; bool s=false; for(i=-10000;i<10001;i++){ long k=n-i; if(k*i==m){ s=true; break; } } if(s==true) cout<<"Yes"<<endl; else cout<<"No"<<endl; } return 0; }
错误代码如下:
#include<iostream> using namespace std; int main(){ long n,m,i; while(cin>>n>>m&& n&& m ){//之前为了图程序简洁,直接把判断写在这里,以为这样也会可以,举个反例 n==0 && m!=0 就可以发现错了 bool s=false; for(i=-10000;i<10001;i++){ long k=n-i; if(k*i==m){ s=true; break; } } if(s==true) cout<<"Yes"<<endl; else cout<<"No"<<endl; } return 0; }