说明:这个题目给我的第一个反应居然是打表,但是仔细的想想,就不是的,因为我都不知道怎么去维护,不知道应该保存说明信息,所以,可能是其他的,看了一些测试数据的范围,范围不大,应该就是一道暴力的题目,所以我就采用了暴力的办法。因为是可以为负数的,所以遍历的范围应该就是【-sqrt(m), sqrt(m)】, 查找一遍就可以了。
#include<bits/stdc++.h>
using namespace std;
int main()
{
//freopen("in.txt","r",stdin);
int n,m;
while(cin >> n >> m && (n+m))
{
int tp = 0;
if(n == m ) cout << "No" << endl;
else {
for(int i = -abs(m); i <= abs(m); ++i)
if( (i*(n-i)==m))
{
tp = 1;
break;
}
if(tp == 1) cout << "Yes" << endl;
else cout << "No" << endl;
}
}
fclose(stdin);
return 0;
}