Cod sursa(job #337414)

Utilizator perticas_catalinperticas catalin perticas_catalin Data 3 august 2009 16:11:23
Problema Factorial Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<iostream>

using namespace std;

FILE*fin=fopen("fact.in","r");
FILE*fout=fopen("fact.out","w");

#define ll long long
#define min(a,b)((a)<(b)?(a):(b))

ll catez (ll nr,ll wd)
{
     ll nd=0,d=wd;    
     
     while(nr/d)
     {
       nd+=nr/d;
       
       d*=wd;
     } 
     
     return nd;
     
}

int main()
{
    
    ll p;
    
    fscanf(fin,"%lld",&p);
    
    if(p==0)
    {
      fprintf(fout,"1");
      return 0;
    }
    
    ll st=5;
    ll dr=1000000000000000000LL;
    
    while(st<dr)
    {
      ll mij = (st+dr)/2;
      
      ll nrz = min(catez(mij,2),catez(mij,5));
      
      if(nrz<p) st=mij+1;
      else dr=mij;
    }
    
    fprintf(fout,"%lld",st);
    
    fclose(fin);
    fclose(fout);
    
    return 0;
}