Pagini recente » Cod sursa (job #2132901) | Cod sursa (job #1945430) | Cod sursa (job #548502) | Cod sursa (job #1450207) | Cod sursa (job #780109)
Cod sursa(job #780109)
#include <stdio.h>
FILE *f=fopen("pascal.in","r");
FILE *g=fopen("pascal.out","w");
int r,d,j,k,nr,nr2,i,ci,fac[5000000],nr3,fac2[5000000];
int main(){
fac2[0]=0;
fac[0]=0;
fscanf(f,"%d%d",&r,&d);
k=0;
nr=0;
nr2=0;
nr3=0;
for(i=1;i<=r;i++){
ci=i;
nr=0;
if(d==2 || d==3 || d==5){
while(ci%d==0){ci=ci/d;nr++;} fac[i]=fac[i-1]+nr;}else
{
if(d==4) {
while(ci%2==0){ci=ci/2;nr++;}
fac[i]=fac[i-1]+nr;
}
if(d==6){
while(ci%2==0){ci=ci/2;nr2++;}
while(ci%3==0){ci=ci/3;nr3++;}
fac[i]=fac[i-1]+nr2;
fac2[i]=fac2[i-1]+nr3;
nr2=0;
nr3=0;
}
}
}
if(d==6){
for(j=0;j<=r;j++)
if(fac[r]>(fac[r-j]+fac[j])&& fac2[r]>(fac2[r-j]+fac2[j])) k++;
} else
for(j=0;j<=r;j++)
if(fac[r]>(fac[r-j]+fac[j])&&(fac[r]-fac[r-j]-fac[j])%2==0) k++;
fprintf(g,"%d",k);
fclose(g);
return 0;
}