#pragma region include #include #include #include #include #include #include #include #include #include #include #include #define ALL(obj) (obj).begin(),(obj).end() #define RALL(obj) (obj).rbegin(),(obj).rend() #define REP(i, n) for(int i = 0; i < (int)(n); i++) #define REPR(i, n) for(int i = (int)(n); i >= 0; i--) #define FOR(i,n,m) for(int i = (int)(n); i < int(m); i++) #define MOD 1000000007 #define INF 1000000000 #define LLINF 4000000000000000000 using namespace std; typedef long long ll; typedef pair PII; typedef vector VI; typedef vector VVI; void input() {} template void input(int& f, R&... r) { scanf("%d", &f); input(r...); } template void input(double& f, R&... r) { scanf("%lf", &f); input(r...); } template void input(ll& f, R&... r) { scanf("%lld", &f); input(r...); } template void input(char& f, R&... r) { scanf("%c", &f); input(r...); } template void input(string& f, R&... r) { cin >> f; input(r...); } template void input(vector& f, R&... r) { REP(i, f.size())input(f[i]); input(r...); } #pragma endregion int main() { int N, D; input(N, D); vector cnt(N*N * 2 + 1, 0); int ans = 0; REP(x, N) { REP(y, N) { int a = (x + 1) * (x + 1) + (y + 1) * (y + 1); cnt[a]++; } } REP(z, N) { REP(w, N) { int b = D + (w + 1) * (w + 1) - (z + 1) * (z + 1); if (b >= 0 && b <= N * N * 2) ans += cnt[b]; } } cout << ans << endl; getchar(); getchar(); }