tle了16个点
#include<stdio.h>
#define ll long long
struct node{
ll n[11200];
ll m[11200];
ll cnt;
};
ll read(){
ll r=0;
char c=getchar();
while(c>='0'&&c<='9')r=r*10+c-48,c=getchar();
return r;
}
node fen(ll a){
node z;
z.cnt=0;
for(ll i=1;i*i<=a;i++){
if(a%i==0&&(i+a/i)%2==0){
z.n[++z.cnt]=i;
z.m[z.cnt]=a/i;
}
}
return z;
}
int main(){
ll a,b;
a=read();
b=read();
node x;
ll sum=0;
if(a*a==4*b){
printf("inf");
return 0;
}
if(a*a>4*b){
//4y^2+(a*a-b*4)=m^2
//m*m-(2y*2y)=(a*a-b*4)
//(m+2y)*(m-2y)=(a*a-b*4)
x=fen(a*a-b*4);
for(ll i=1;i<=x.cnt;i++){
if((x.m[i]-x.n[i])%4!=0) continue;
ll zy=(x.m[i]-x.n[i])/4;
ll zm=(x.m[i]+x.n[i])/2;
bool d=(zm-a)&1;
if(zm>=a&&d==0)sum++;
}
printf("%lld",sum);
return 0;
}
if(a*a<4*b){
//4y^2-(b*4-a*a)=m^2
//(2y)^2-m^2=(b*4-a*a)
//(2y+m)*(2y-m)=(b*4-a*a)
x=fen(4*b-a*a);
for(ll i=1;i<=x.cnt;i++){
if((x.m[i]+x.n[i])%4!=0) continue;
ll zy=(x.m[i]+x.n[i])/4;
ll zm=(x.m[i]-x.n[i])/2;
bool d=(zm-a)&1;
if(zm>=a&&d==0)sum++;
}
printf("%lld",sum);
return 0;
}
}