这题卡时间,如果直接用双层循环会超时,需要根据x+y=n,x*y=m计算出y关于x的表达式,即x*x-a*x+b==0,这样一层循环就能搞定。
#include<iostream>
#include<string>
#include<string.h>
#include<math.h>
using namespace std;
int main()
{
int n,m;
while(cin>>n>>m)
{
if(n==0&&m==0) break;
//int a=abs(m);
int i,t=1;
for(i=-10000;i<=10000;i++)
{
if(i*i-n*i+m==0)
{
cout<<"Yes"<<endl;
t=0;
break;
}
}
if(t)
cout<<"No"<<endl;
}
return 0;
}