- 245's solution
-
题解 P245
- @ 2026-4-5 10:17:22
数学题,分析如下:
设 ,。
由性质可得:
然后枚举 即可。
AC code:
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define mp make_pair
int main() {
ll a;
cin >> a;
vector<pair<ll, ll>> res;
if (a != 1) {
ll a2 = a * a;
for (ll d = 1; d * d <= a2; ++d) {
if (a2 % d != 0) continue;
ll e = a2 / d;
if ((d + e) % 2 != 0) continue;
ll b = (e - d) / 2, c = (e + d) / 2;
if (b > 0) {
res.pb(mp(b, c));
}
}
}
sort(res.begin(), res.end(), [](const pair<ll, ll>& x, const pair<ll, ll>& y) {
return x.first > y.first;
});
for (int i = 0; i < res.size(); ++i) {
cout << res[i].first << ' ' << res[i].second << endl;
}
return 0;
}