#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define fi first
#define sn second
typedef long long ll;
typedef vector<int> VI;
typedef vector<char> VC;
typedef pair<int, int> PI;
typedef unordered_map<int, int> MI;
typedef set<int> SI;
// VI A;
int A[5000 * 5000 + 1];
int main() {
int n;
cin >> n;
int a, b, h, d;
int ab, dh;
fill(A, A + 5000 * 5000 + 1, 0);
// A.resize(n * n + 1, 0);
for (int p = 1; p <= n; p++) {
for (int q = p; q <= n; q++) {
a = p;
b = q;
ab = a * a + b * b;
if (ab <= n * n) A[ab]++;
}
}
ll res = 0;
for (int p = 1; p <= n; p++) {
for (int q = p; q <= n; q++) {
d = q;
h = p;
dh = d * d - h * h;
res += (ll)A[dh];
}
}
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 45 46 47 48 49 50 51 52 53 | #include <bits/stdc++.h> using namespace std; #define pb push_back #define fi first #define sn second typedef long long ll; typedef vector<int> VI; typedef vector<char> VC; typedef pair<int, int> PI; typedef unordered_map<int, int> MI; typedef set<int> SI; // VI A; int A[5000 * 5000 + 1]; int main() { int n; cin >> n; int a, b, h, d; int ab, dh; fill(A, A + 5000 * 5000 + 1, 0); // A.resize(n * n + 1, 0); for (int p = 1; p <= n; p++) { for (int q = p; q <= n; q++) { a = p; b = q; ab = a * a + b * b; if (ab <= n * n) A[ab]++; } } ll res = 0; for (int p = 1; p <= n; p++) { for (int q = p; q <= n; q++) { d = q; h = p; dh = d * d - h * h; res += (ll)A[dh]; } } cout << res << endl; return 0; } |
English