// Homura Akemi a.k.a. Starrykiller (/user/235125) // I love Madoka Kaname forever! #include <bits/stdc++.h> using namespace std; auto range(auto l, auto r) { return views::iota(l,r); } auto rev=views::reverse; _GLIBCXX_ALWAYS_INLINE void chmax(auto &a, auto b) { a=max(a,b); } _GLIBCXX_ALWAYS_INLINE void chmin(auto &a, auto b) { a=min(a,b); } // #define int long long constexpr int MAXN=2.5e7+10; int f[MAXN], g[MAXN]; int n; signed main() { ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); cin>>n; for (int i=1; i<=n; ++i) for (int j=i; i*i+j*j<=n*n; ++j) f[i*i+j*j]++; vector<int> p; p.reserve(n*n); for (int i=1; i<=n*n; ++i) if (f[i]) p.emplace_back(i); int ans=0; for (int i=1; i<=n; ++i) for (int j=1; j<=i; ++j) // j*j+[?]=i*i ans+=f[i*i-j*j]; cout<<ans<<'\n'; }
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 | // Homura Akemi a.k.a. Starrykiller (/user/235125) // I love Madoka Kaname forever! #include <bits/stdc++.h> using namespace std; auto range(auto l, auto r) { return views::iota(l,r); } auto rev=views::reverse; _GLIBCXX_ALWAYS_INLINE void chmax(auto &a, auto b) { a=max(a,b); } _GLIBCXX_ALWAYS_INLINE void chmin(auto &a, auto b) { a=min(a,b); } // #define int long long constexpr int MAXN=2.5e7+10; int f[MAXN], g[MAXN]; int n; signed main() { ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); cin>>n; for (int i=1; i<=n; ++i) for (int j=i; i*i+j*j<=n*n; ++j) f[i*i+j*j]++; vector<int> p; p.reserve(n*n); for (int i=1; i<=n*n; ++i) if (f[i]) p.emplace_back(i); int ans=0; for (int i=1; i<=n; ++i) for (int j=1; j<=i; ++j) // j*j+[?]=i*i ans+=f[i*i-j*j]; cout<<ans<<'\n'; } |