一个点T,一个点W
悬1关
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long n,k;
cin>>n>>k;
long long mx=((n-k+1)+n)*k/2;
long long mn=ceil(sqrt(1ll+k)*k/2);
//cout<<<<endl;
long long ans=0;
if(k%2==0)
{
for(long long i=mn;i*i<=mx;i++)
{
long long op=1.0*i*i;
double h=1.0*op/k;
if(h>n)break;
long long u=h;
if(u!=h-0.5)continue;
//(2a+1)/2
long long l=u-k/2+1;
//long long r=u+1+k/2-1;
//if(r>n)break;
if(l<1)continue;
ans++;
}
}
else
{
for(long long i=mn;i*i<=mx;i++)
{
long long op=i*i;
double w=1.0*op/k;
long long u=w;
if(w>n)break;
if(w!=u)continue;
//1 2 3 4
long long l=u-k/2;
//long long r=u+k/2;
//if(r>n)break;
if(l<1)continue;
ans++;
}
}
cout<<ans<<endl;
}