Pagini recente » Cod sursa (job #2677186) | Cod sursa (job #849574) | Cod sursa (job #2229018) | Cod sursa (job #2454892) | Cod sursa (job #324353)
Cod sursa(job #324353)
#include<stdio.h>
int a[5000001],i,r,d,b[5000001];
long long k;
int cat( int x, int y)
{ int nr=0;
while(x%y==0) x/=y,nr++;
return nr;
}
int main()
{
freopen("pascal.in","r",stdin);
freopen("pascal.out","w",stdout);
scanf("%d %d",&r,&d);
if(r==0) { printf("0\n");
fclose(stdin);
fclose(stdout);
return 0;
}
if(r==1&&d==2) { printf("1\n");
fclose(stdin);
fclose(stdout);
return 0;
}
else if(r==1&&d>2) { printf("0\n");
fclose(stdin);
fclose(stdout);
return 0;
}
if(d==2||d==3||d==5)
{ for(i=2;i<=r;i++){ a[i]=cat(i,d);
a[i]=a[i-1]+a[i];
}
for(i=r/2;i>=1;--i) if((a[r]-(a[r-i]+a[i]))>0) {
if(r%2==0&&i==r/2) k+=1;
else k+=2;
}
printf("%lld\n",k);
fclose(stdin);
fclose(stdout);
return 0;
}
if(d==4)
{ d=d/2;
for(i=2;i<=r;i++){ a[i]=cat(i,d);
a[i]=a[i-1]+a[i];
}
for(i=r/2;i>=1;--i) if((a[r]-(a[r-i]+a[i]))>1) { if(r%2==0&&i==r/2) k+=1;
else k+=2;
}
printf("%lld\n",k);
fclose(stdin);
fclose(stdout);
return 0;
}
if(d==6)
{for(i=2;i<=r;i++){ a[i]=cat(i,d/2);
a[i]=a[i-1]+a[i];
b[i]=cat(i,d/3);
b[i]=b[i-1]+b[i];
}
for(i=r/2;i>=1;--i) if(((a[r]-(a[r-i]+a[i]))>0)&&((b[r]-(b[r-i]+b[i]))>0)) { if(r%2==0&&i==r/2) k+=1;
else k+=2;
}
printf("%lld\n",k);
fclose(stdin);
fclose(stdout);
return 0;
}
}