/* ---------- STL Libraries ---------- */ // IO library #include #include #include #include #include // algorithm library #include #include #include #include #include // container library #include #include #include #include #include #include #include #include #include #include #include /* ---------- Namespace ---------- */ using namespace std; /* ---------- Type ---------- */ using ll = long long; #define int ll #define P pair /* ---------- Constants */ const double PI = 3.141592653589793238462643383279; const ll MOD = 1e9 + 7; const int INF = 1LL << 55; /* v-v-v-v-v-v-v-v-v Main Part v-v-v-v-v-v-v-v-v */ signed main() { int N, D; cin >> N >> D; vector pool1; for (int i = 1; i <= N; i++) { for (int j = 1; j <= N; j++) { pool1.push_back(i * i + j * j); } } sort(pool1.begin(), pool1.end()); vector pool2; for (int i = 1; i <= N; i++) { for (int j = 1; j <= N; j++) { int val = i * i - j * j + D; if (val <= 0) continue; pool2.push_back(val); } } sort(pool2.begin(), pool2.end()); int ret = 0; for (int val : pool1) { ret += upper_bound(pool2.begin(), pool2.end(), val) - lower_bound(pool2.begin(), pool2.end(), val); } cout << ret << endl; return 0; }