#include using namespace std; int main (){ int n,d,ans=0; cin >> n >> d; vector xy(2*n*n+1,0); vector zw(2*n*n+1,0); //メモリを使って左辺、右辺がある値になる場合の個数を記憶 for(int x=1;x<=n;x++){ for(int y=1;y<=n;y++){ xy.at(x*x+y*y-1)++; } } for(int w=1;w<=n;w++){ for(int z=1;z<=n;z++){ if((w*w-z*z+d) <= (2*n*n) && 0 <= w*w-z*z+d-1){ zw.at(w*w-z*z+d-1)++; } } } for(int i=0;i<2*n*n;i++){ ans += xy.at(i)*zw.at(i); } cout << ans << endl; }