#include<iostream>
#include<cstring>
using namespace std;
int main( )
{
int n,a,m,x;
int res[10010];
while(cin>>n>>a)
{
int flag=0;
int i, j;
memset(res, 0, sizeof(res));
res[0] = 1;
res[1] = 1;
for (i = 2; i <= n; i++)
{
for (j = 1; j <= res[0]; j++)
res[j] = res[j] * i;
for (j = 1; j <= res[0]; j++)
{
if (res[j] >= 10)
{
res[j+1] += res[j] / 10;
res[j] %= 10;
if (j == res[0])
res[0]++;
}
}
}
m=res[0];
int p=0;
int q;
do{
for(i=m;i>=1;--i)
{ q=p;
p=(10*p+res[i])%a;
res[i]=(10*q+res[i])/a;
}
if(p==0) flag=flag+1;
}while(p==0);
cout<<flag<<endl;
}
return 0;
}
#include<cstring>
using namespace std;
int main( )
{
int n,a,m,x;
int res[10010];
while(cin>>n>>a)
{
int flag=0;
int i, j;
memset(res, 0, sizeof(res));
res[0] = 1;
res[1] = 1;
for (i = 2; i <= n; i++)
{
for (j = 1; j <= res[0]; j++)
res[j] = res[j] * i;
for (j = 1; j <= res[0]; j++)
{
if (res[j] >= 10)
{
res[j+1] += res[j] / 10;
res[j] %= 10;
if (j == res[0])
res[0]++;
}
}
}
m=res[0];
int p=0;
int q;
do{
for(i=m;i>=1;--i)
{ q=p;
p=(10*p+res[i])%a;
res[i]=(10*q+res[i])/a;
}
if(p==0) flag=flag+1;
}while(p==0);
cout<<flag<<endl;
}
return 0;
}