Cod sursa(job #780109)

Utilizator lehman97Dimulescu David lehman97 Data 19 august 2012 22:09:21
Problema Pascal Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#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;
}