Cod sursa(job #807566)

Utilizator Mirc100Mircea Octavian Mirc100 Data 4 noiembrie 2012 22:28:53
Problema Factorial Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<stdio.h>

long nrzero(long n){
     long nr=0;
     if(n<5)
         return 0;
     while(n>=1){
         nr+=n/5; 
         n=n/5;
     }
     return nr;
}

long p;
long factorial(){
     long l=0; long r=100000000;
     if(p==0)
         return 1;
     while(l<=r){
        long m=(l+r)/2;
        long nm=nrzero(m);
    
        if(nm==p)
            return m;
        if(nm>p)
           r=m-1;
        else 
           l=m+1;    
     }   
     return -1;         
}         


int main(){
    FILE *f=fopen("fact.in","r");
    FILE *g=fopen("fact.out","w");
    fscanf(f,"%ld",&p);
 
    if(p==0)
        fprintf(g,"%ld",1);
    else{
        long rez=factorial();     
        fprintf(g,"%ld",rez-rez%5); 
    }
    fclose(f);
    fclose(g);   
    return 0;
}