#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; } |