#include <bits/stdc++.h>
using namespace std;
#define int long long
int n;
int solve() {
vector<int> sqSum((n*n)+1, 0);
vector<int> sqDif((n*n)+1, 0);
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= i; ++j) {
if ((i*i)+(j*j) <= (n*n)) sqSum[(i*i)+(j*j)]++;
sqDif[(i*i)-(j*j)]++;
}
}
int result = 0;
for (int i = 1; i <= (n*n); ++i) {
result += sqSum[i] * sqDif[i];
}
return result;
}
int brute() {
int counter = 0;
for (int i = 1; i < n; ++i) {
for (int j = 1; j < n; ++j) {
for (int k = 1; k <= i; ++k) {
int di = (i*i)+(j*j)+(k*k);
int diq = (int)sqrt(di);
if (di <= (n*n) && diq*diq == di) {
counter++;
//cout << i << ' ' << j << ' ' << k << '\n';
}
}
}
}
return counter;
}
signed main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
//srand(time(NULL));
cin >> n;
cout << solve();
/*for (n = 4500; n < 5000; ++n) {
cout << n << ' ' << solve() << '\n';
/*int a = brute(), b = solve();
cout << n << ' ' << a << ' ' << b << '\n';
if (a!=b) {
cout << n;
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 54 55 56 57 58 59 60 61 62 | #include <bits/stdc++.h> using namespace std; #define int long long int n; int solve() { vector<int> sqSum((n*n)+1, 0); vector<int> sqDif((n*n)+1, 0); for (int i = 1; i <= n; ++i) { for (int j = 1; j <= i; ++j) { if ((i*i)+(j*j) <= (n*n)) sqSum[(i*i)+(j*j)]++; sqDif[(i*i)-(j*j)]++; } } int result = 0; for (int i = 1; i <= (n*n); ++i) { result += sqSum[i] * sqDif[i]; } return result; } int brute() { int counter = 0; for (int i = 1; i < n; ++i) { for (int j = 1; j < n; ++j) { for (int k = 1; k <= i; ++k) { int di = (i*i)+(j*j)+(k*k); int diq = (int)sqrt(di); if (di <= (n*n) && diq*diq == di) { counter++; //cout << i << ' ' << j << ' ' << k << '\n'; } } } } return counter; } signed main() { ios_base::sync_with_stdio(false); cin.tie(NULL); //srand(time(NULL)); cin >> n; cout << solve(); /*for (n = 4500; n < 5000; ++n) { cout << n << ' ' << solve() << '\n'; /*int a = brute(), b = solve(); cout << n << ' ' << a << ' ' << b << '\n'; if (a!=b) { cout << n; return 0; }* / }*/ } |
English