#include using namespace std; #define ALL(x) x.begin(),x.end() #define rep(i,n) for(int i=0;ibool chmax(T &a, const T &b) { if (abool chmin(T &a, const T &b) { if (b enum_div(ll n){ //O(n^1/2) vector ret; for(ll i=1;i*i<=n;i++) { if(n%i==0) { ret.push_back(i); if(i!=1&&i*i!=n) { ret.push_back(n/i); } } } ret.push_back(n);//if needed //sort(ret.begin(),ret.end());//if needed return ret; } int main(){ ll n,k; cin>>n>>k; ll ans=0; auto v=enum_div(k); //(a+c)*(b+d) for(auto i:v){ if(i*i>k) continue; if(k/i>2*n) continue; //i-1:(a+c)のパターン数 //こいつがn以下の制約に触れるとき(b+d)はa+c以上だから //こいつも制約に触れるからあり得ない ans+=(i-1)*min(k/i-1,n*2-k/i+1)*2; } cout<