Pagini recente » Cod sursa (job #606445) | Cod sursa (job #228344) | Cod sursa (job #401099) | Cod sursa (job #423090) | Cod sursa (job #1297064)
#include<stdio.h>
int calc(int n , int p)
{
int put=p,ans=0;
while(n/put>0){
ans+=n/put;
put*=p;
}
return ans;
}
int fact[5000004][3],i,j,d,ok,sol,v[3],r,nr;
int main()
{
freopen("pascal.in","r",stdin);
freopen("pascal.out","w",stdout);
scanf("%d%d",&r,&d);
if(d==4||d==6)
{
nr=2;
v[1]=2;
v[2]=d/2;
}
else
{
nr=1;
v[1]=d;
}
for(i=1;i<=r;i++)
fact[i][1]=fact[i][2]=-1;
for(j=1;j<=nr;j++)
fact[r][j]=calc(r,v[j]);
for(i=1;i<(r+2)/2;i++)
{
ok=0;
for(j=1;j<=nr;j++)
{
if(fact[i][j]==-1)
fact[i][j]=calc(i,v[j]);
if(fact[r-i][j]==-1)
fact[r-i][j]=calc(r-i,v[j]);
if(fact[r][j]-fact[i][j]-fact[r-i][j]<=0)
ok=1;
}
if(ok==0)
sol++;
}
sol*=2;
if(r%2==0)
sol--;
printf("%d",sol);
return 0;
}