2 条题解

  • 0
    @ 2026-4-5 10:17:22

    数学题,分析如下:

    a2+b2=c2a ^ 2 + b ^ 2 = c ^ 2 a2=(c−b)(c+b)a ^ 2 = (c - b)(c + b)

    设 d=c−bd = c - b,e=c+be = c + b。

    a2=dea ^ 2 = de

    由性质可得:

    d≡e(mod2)d \equiv e \pmod 2

    然后枚举 dd 即可。

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

    信息

    ID
    245
    时间
    1000ms
    内存
    512MiB
    难度
    2
    标签
    递交数
    5
    已通过
    5
    上传者