結果

問題 No.800 四平方定理
コンテスト
ユーザー vjudge1
提出日時 2026-03-10 18:37:31
言語 C++23
(gcc 15.2.0 + boost 1.89.0)
コンパイル:
g++-15 -O2 -lm -std=c++23 -Wuninitialized -DONLINE_JUDGE -o a.out _filename_
実行:
./a.out
結果
TLE  
実行時間 -
コード長 2,540 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 2,380 ms
コンパイル使用メモリ 342,696 KB
実行使用メモリ 193,536 KB
最終ジャッジ日時 2026-03-10 18:39:23
合計ジャッジ時間 48,712 ms
ジャッジサーバーID
(参考情報)
judge5_0 / judge3_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2 TLE * 1
other AC * 18 TLE * 12
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

#include <bits/stdc++.h>
using namespace std;

#define FAST_IO                  \
    ios::sync_with_stdio(false); \
    cin.tie(nullptr);
#define ll long long
#define ull unsigned long long
#define ld long double
#define yes cout << "YES\n"
#define no cout << "NO\n"
#define endl '\n'
#define pb push_back
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
#define upb(v, x) ((upper_bound((v).begin(), (v).end(), (x))) - (v).begin())
#define upbit(v, x) (upper_bound((v).begin(), (v).end(), (x)))
#define lwb(v, x) ((lower_bound((v).begin(), (v).end(), (x))) - (v).begin())
#define lwbit(v, x) (lower_bound((v).begin(), (v).end(), (x)))
#define upbs(ms, x) ((ms).upper_bound(x))
#define lwbs(ms, x) ((ms).upper_bound(x))
#define scan(v, n)               \
    for (ll i = 0; i < (n); i++) \
    cin >> (v)[i]
#define rep(i, n) for (ll i = 0; i < (n); i++)
#define rep1(i, n) for (ll i = 1; i <= (n); i++)
#define rrep(i, n) for (ll i = (n) - 1; i >= 0; i--)
#define repr(i, a, b) for (ll i = (a); i <= (b); i++)
#define rrepr(i, a, b) for (ll i = (a); i >= (b); i--)
#define printv(v)       \
    for (auto &x : (v)) \
    cout << x << " "
#define printvp(v)           \
    for (auto &[a, b] : (v)) \
    cout << a << " " << b << " "
#define printn(v)       \
    for (auto &x : (v)) \
    cout << x << "\n"
#define printi(i, a, b)             \
    for (ll i = (a); i <= (b); i++) \
    cout << i << " "
#define findIdx(v, x) ([](const auto &vv, const auto &xx) {auto it = find((vv).begin(), (vv).end(), (xx));return (it != (vv).end() ? (int)(it - (vv).begin()) : -1); }(v, x))
#define findIt(v, x) ([](auto &vv, const auto &xx) { return find((vv).begin(), (vv).end(), (xx)); }(v, x))

typedef vector<ll> vll;
typedef pair<ll, ll> pll;
typedef vector<pll> vpll;
typedef map<ll, ll> mll;
typedef map<char, ll> mcl;
typedef map<string, ll> msl;
typedef unordered_map<ll, ll> umll;
typedef unordered_map<ll, vll> umvll;

ll gcd(ll a, ll b) { return (b == 0) ? a : gcd(b, a % b); }
ll lcm(ll a, ll b) { return a / gcd(a, b) * b; }
ll MX = LLONG_MAX;
const ll INF = MX / 4;

void solve()
{
    ll n, d;
    cin >> n >> d;
    ll mxVal = 2 * n * n;
    map<ll, ll> freq;
    rep1(x, n)
        rep1(y, n)
            freq[x * x + y * y]++;

    ll cnt = 0;

    rep1(z, n)
    {
        rep1(w, n)
        {
            ll val = w * w + d - z * z;
            if (val >= 0 && val <= mxVal)
                cnt += freq[val];
        }
    }

    cout << cnt << endl;
}

int main()
{
    FAST_IO;
    solve();
    return 0;
}
0