#include <bits/stdc++.h>
using namespace std;
vector<int> t, v;
int n;
int znajdz(int x){
return upper_bound(v.begin(),v.end(),x)-lower_bound(v.begin(),v.end(),x);
}
int main(){
cin >> n;
t.resize(n+1);
for(int i=0;i<=n;i++){
t[i] = i*i;
}
for(int i=1;i<=n;i++){
for(int j=i;j<=n&&i*i+j*j<=n*n;j++){
v.push_back(i*i+j*j);
//cout << v.back() << " ";
}
}
sort(v.begin(),v.end());
long long result = 0;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
result += znajdz(t[i] - j*j);
//cout << i << " " << j << " " << result << "\n";
}
}
cout << result;
}
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 | #include <bits/stdc++.h> using namespace std; vector<int> t, v; int n; int znajdz(int x){ return upper_bound(v.begin(),v.end(),x)-lower_bound(v.begin(),v.end(),x); } int main(){ cin >> n; t.resize(n+1); for(int i=0;i<=n;i++){ t[i] = i*i; } for(int i=1;i<=n;i++){ for(int j=i;j<=n&&i*i+j*j<=n*n;j++){ v.push_back(i*i+j*j); //cout << v.back() << " "; } } sort(v.begin(),v.end()); long long result = 0; for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ result += znajdz(t[i] - j*j); //cout << i << " " << j << " " << result << "\n"; } } cout << result; } |
English