#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<ll, ll> pii; const int N = 5e3+10; const ll INF = 1e18; ll n, cnt[3*N*N+100]; void solve() { cin>>n; ll ans = 0; for (ll a=1; a<=n; ++a) { for (ll b=a; b<=n; ++b) { ++cnt[a*a+b*b]; } } // a*a+b*b+h*h = r*r <= n*n // a*a+b*b = r*r-h*h for (ll r=1; r<=n; ++r) { for (int h=1; h<=n; ++h) { if (r*r - h*h >= 0) ans += cnt[r*r-h*h]; } } cout<<ans<<"\n"; } int main() { int t=1; //cin>>t; while (t--) solve(); }
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 | #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<ll, ll> pii; const int N = 5e3+10; const ll INF = 1e18; ll n, cnt[3*N*N+100]; void solve() { cin>>n; ll ans = 0; for (ll a=1; a<=n; ++a) { for (ll b=a; b<=n; ++b) { ++cnt[a*a+b*b]; } } // a*a+b*b+h*h = r*r <= n*n // a*a+b*b = r*r-h*h for (ll r=1; r<=n; ++r) { for (int h=1; h<=n; ++h) { if (r*r - h*h >= 0) ans += cnt[r*r-h*h]; } } cout<<ans<<"\n"; } int main() { int t=1; //cin>>t; while (t--) solve(); } |