HDU-2092 整数解

水题,可以用两种方法求解:

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;
}


你可能感兴趣的:(ACM_Beginner)