#include<bits/stdc++.h> using namespace std; typedef long long in; void solve() { in n=500; cin>>n; in ile=0; vector<vector<int>>v(n*n+1); for(in i=1;i<=n;i++) { for(in j=i+1;j<=n;j++) { if(i*i+j*j>=n*n)continue; v[i*i+j*j].push_back(j); } } for(int z=0;z<=n*n;z++)sort(v[z].begin(),v[z].end()); for(in i=2;i<=n;i++) { for(in j=i+1;j<=n;j++) { in m=j*j-i*i; if(v[m].size()==0)continue; in p=0; in k=v[m].size()-1; while(p<k) { in s=(p+k+1)/2; if(v[m][s]<i)p=s;else k=s-1; } if(v[m][p]>=i)continue; ile+=(p+1)*3; } } for(in i=1;i<=n;i++) { for(in j=i+1;j<=n;j++) { in p=i*i+i*i+j*j; in pl=sqrt(p); pl*=pl; if(p==pl&&p<=n*n)ile+=2; p=i*i+j*j+j*j; pl=sqrt(p); pl*=pl; if(p==pl&&p<=n*n)ile+=2; } } cout<<ile; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); int h=1; while(h--)solve(); 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 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | #include<bits/stdc++.h> using namespace std; typedef long long in; void solve() { in n=500; cin>>n; in ile=0; vector<vector<int>>v(n*n+1); for(in i=1;i<=n;i++) { for(in j=i+1;j<=n;j++) { if(i*i+j*j>=n*n)continue; v[i*i+j*j].push_back(j); } } for(int z=0;z<=n*n;z++)sort(v[z].begin(),v[z].end()); for(in i=2;i<=n;i++) { for(in j=i+1;j<=n;j++) { in m=j*j-i*i; if(v[m].size()==0)continue; in p=0; in k=v[m].size()-1; while(p<k) { in s=(p+k+1)/2; if(v[m][s]<i)p=s;else k=s-1; } if(v[m][p]>=i)continue; ile+=(p+1)*3; } } for(in i=1;i<=n;i++) { for(in j=i+1;j<=n;j++) { in p=i*i+i*i+j*j; in pl=sqrt(p); pl*=pl; if(p==pl&&p<=n*n)ile+=2; p=i*i+j*j+j*j; pl=sqrt(p); pl*=pl; if(p==pl&&p<=n*n)ile+=2; } } cout<<ile; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); int h=1; while(h--)solve(); return 0; } |