Pythagorean Triples 题解
首先我们要知道勾股定理:
然后我们设一个数
这样
根据平方差公式,所以
我们可以使
随后我们解出这个方程,便可得知:
所以,如果
if (a % 2 == 1) {
a *= a;
cout << (a - 1) / 2 << " ";
cout << (a + 1) / 2 << endl;
}
接下来,我们再来判断
if (a % 2 == 0) {
int ans = 1;
while (a % 2 == 0) {
a /= 2;
ans *= 2;
}
}
还有,如果
if (a == 1)
{
cout << 3 * ans / 4 << " ";
cout << 5 * ans / 4 << endl;
}
对了!我们还要判断一下
结尾附上总代码:
#include <bits/stdc++.h>
using namespace std;
int main() {
long long a;
cin >> a;
if (a <= 2) {
cout << -1 << endl;
return 0;
}
if (a % 2 == 1) {
a *= a;
cout << (a - 1) / 2 << " ";
cout << (a + 1) / 2 << endl;
}
if (a % 2 == 0) {
int ans = 1;
while (a % 2 == 0) {
a /= 2;
ans *= 2;
}
if (a == 1)
{
cout << 3 * ans / 4 << " ";
cout << 5 * ans / 4 << endl;
return 0;
}
a *= a;
cout << (a - 1) * ans / 2 << " ";
cout << (a + 1) * ans / 2 << endl;
}
return 0;
}