#include <bits/stdc++.h> using namespace std; #ifdef LOCAL #include "debug.h" #else #define debug(...) {} #endif #define x first #define y second #define ir(a, x, b) ((a) <= (x) && (x) <= (b)) #define vec vector #define rep(i, a, b) for (ll i = a; i < (b); ++i) #define all(x) (x).begin(), (x).end() using ll = long long; int main() { cin.tie(0)->sync_with_stdio(0); int N; cin >> N; vec<ll> a(5000*5000+1); vec<ll> b(5000*5000+1); rep (x, 1, 5001) rep (y, 1, x+1) { if (x*x + y*y < a.size()) { a[x*x + y*y]++; } } rep (d, 1, N+1) rep (h, 1, 5001) { if (d*d - h*h >= 0 && d*d - h*h < b.size()) { b[d*d - h*h]++; } } ll res = 0; rep (x, 0, a.size()) { if (a[x] && b[x]) { // debug(x, a[x], b[x]); } res += a[x] * b[x]; } cout << res << endl; return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | #include <bits/stdc++.h> using namespace std; #ifdef LOCAL #include "debug.h" #else #define debug(...) {} #endif #define x first #define y second #define ir(a, x, b) ((a) <= (x) && (x) <= (b)) #define vec vector #define rep(i, a, b) for (ll i = a; i < (b); ++i) #define all(x) (x).begin(), (x).end() using ll = long long; int main() { cin.tie(0)->sync_with_stdio(0); int N; cin >> N; vec<ll> a(5000*5000+1); vec<ll> b(5000*5000+1); rep (x, 1, 5001) rep (y, 1, x+1) { if (x*x + y*y < a.size()) { a[x*x + y*y]++; } } rep (d, 1, N+1) rep (h, 1, 5001) { if (d*d - h*h >= 0 && d*d - h*h < b.size()) { b[d*d - h*h]++; } } ll res = 0; rep (x, 0, a.size()) { if (a[x] && b[x]) { // debug(x, a[x], b[x]); } res += a[x] * b[x]; } cout << res << endl; return 0; } |