Pagini recente » Cod sursa (job #2117261) | Cod sursa (job #2046868) | Cod sursa (job #3153518) | Cod sursa (job #564891) | Cod sursa (job #520575)
Cod sursa(job #520575)
#include<stdio.h>
FILE *fin, *fout;
int r,d,i,j,f[4][5000000],dd[2][10],nr,nr1,k,ok;
int div(int x, int d){
int nr;
nr=0;
while(x%d==0){
nr++;
x/=d;
}
return nr;
}
int main(){
fin=fopen("pascal.in","r");
fout=fopen("pascal.out","w");
fscanf(fin,"%d %d",&r,&d);
k=2;
while(k*k<=d){
nr=0;
while(d%k==0){
d/=k;
++nr;
}
if(nr!=0){
dd[0][0]++;
dd[0][ dd[0][0] ]=k;
dd[1][ dd[0][0] ]=nr;
}
++k;
}
if(d>1){
dd[0][0]++;
dd[0][ dd[0][0] ]=d;
dd[1][ dd[0][0] ]=1;
}
for(i=1;i<=r;i++){
for(j=1;j<=dd[0][0];j++){
f[j][i]=f[j][i-1]+div(i,dd[0][j]);
}
}
int nr1=0;
for(i=1;i<=r;i++){
ok=1;
for(j=1;j<=dd[0][0];j++){
nr=f[j][r]-f[j][i]-f[j][r-i];
if(nr<dd[1][j]){
ok=0;
break;
}
}
if(ok==1){
nr1++;
}
}
fprintf(fout,"%d",nr1);
fclose(fout);
fclose(fin);
return 0;
}