Cod sursa(job #505846)

Utilizator cat_red20Vasile Ioana cat_red20 Data 4 decembrie 2010 11:01:35
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
//se da un nr intreg p . sa se gaseasca cel mic nr nat pt care n! are exact p cifre de 0 la sf

#include<limits.h>
#include<stdio.h>
FILE *fin,*fout;

long n,nrz,max=LONG_MAX,exp,u,p,m,nr;
int main(){
  fin=fopen("fact.in","r");
  fout=fopen("fact.out","w");
   fscanf(fin,"%ld",&nrz);
   p=1; u=max;
   if(nrz==0){fprintf(fout,"1"); return 0;}
   while(p<=u){
     m=(p+u)/2;
     exp=1;
     nr=0;
     while(exp<=m){
       exp=exp*5;
       nr+=m/exp;
     }
     if(nrz==nr){
      m=m-m%5;
      fprintf(fout,"%ld",m);
      break;
     }
     else
     if(nr>nrz){u=m-1;}
     else p=m+1;
   }
   if(p>u){fprintf(fout,"-1");}
  fclose(fin);
  fclose(fout);
return 0;}