水题,可以用两种方法求解:
1.将两个方程联立成一个一元二次方程,使用根的判别式进行求解;
2.暴力枚举,从-10000枚举到10000,不建议这么做。
下面是方法1的AC代码
#include
using namespace std;
#include
//#include
int main()
{
int n, m;
while (cin>>n>>m)
{
if (n == 0 && m == 0)
{
break;
}
int delta = n*n - 4 * m;
if (delta < 0)
{
cout << "No" << endl;
continue;
}
int ac = sqrt(delta);
if (ac*ac != delta)
{
cout << "No" << endl;
continue;
}
int frac_1 = n + ac;
int frac_2 = n - ac;
if (frac_1 % 2 == 0 && frac_2 % 2 == 0)
{
cout << "Yes" << endl;
}
else
{
cout << "No" << endl;
}
}
//system("pause");
return 0;
}