Pagini recente » Cod sursa (job #801828) | Cod sursa (job #2472958) | Cod sursa (job #857757) | Cod sursa (job #2610536) | Cod sursa (job #1197773)
#include <cstdio>
using namespace std;
bool vf2=0, vf3=0, vf5=0;
int vp2, vp22, vp3, vp32, vp5, vp52, vpn2, vpn3, vpn5;
int vp(int n, int p)//vp(n!)=vpn=?
{
int i, updatedp, vpn=0;
updatedp=p;
while(updatedp<=n)
{
vpn+=n/updatedp;
updatedp*=p;
}
return vpn;
}
int n;
int main()
{
freopen("pascal.in", "r", stdin);
freopen("pascal.out", "w", stdout);
int d, lim, nr=0;
scanf("%d%d", &n, &d);
lim=(n+1)/2;
if(d%2==0)
{
vf2=1;
vpn2=vp(n, 2);
}
if(d%3==0)
{
vf3=1;
vpn3=vp(n, 3);
}
if(d%5==0)
{
vf5=1;
vpn5=vp(n, 5);
}
for(int i=0;i<lim;i++)
{
if(vf2==1)
{
vp2=vp(i, 2);
vp22=vp(n-i, 2);
if(vpn2==vp2+vp22)
continue;
}
if(vf3==1)
{
vp3=vp(i, 3);
vp32=vp(n-i, 3);
if(vpn3==vp3+vp32)
continue;
}
if(vf5==1)
{
vp5=vp(i, 5);
vp52=vp(n-i, 5);
if(vpn5==vp5+vp52)
continue;
}
nr++;
}
nr*=2;
int i=n/2;
if(n%2==0)
{
bool ok=1;
if(vf2==1)
{
vp2=vp(i, 2);
vp22=vp(n-i, 2);
if(vpn2==vp2+vp22)
ok=0;
}
if(vf3==1)
{
vp3=vp(i, 3);
vp32=vp(n-i, 3);
if(vpn3==vp3+vp32)
ok=0;
}
if(vf5==1)
{
vp5=vp(i, 5);
vp52=vp(n-i, 5);
if(vpn5==vp5+vp52)
ok=0;
}
nr++;
}
printf("%d", nr);
return 0;
}