Cod sursa(job #807573)

Utilizator Mirc100Mircea Octavian Mirc100 Data 4 noiembrie 2012 22:45:36
Problema Factorial Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include<stdio.h>

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

long int p;
long int factorial(){
     long int l=0; long int r=100000000;
     if(p==0)
         return 1;
     while(l<=r){
        long int m=(l+r)/2;
        long int 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(); 
        if(rez>0)
            rez=rez-rez%5;    
        fprintf(g,"%ld",rez); 
    }
    fclose(f);
    fclose(g);   
    return 0;
}