Cod sursa(job #333827)

Utilizator marcelcodreaCodrea Marcel marcelcodrea Data 23 iulie 2009 23:49:27
Problema Factorial Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <stdio.h>


int st=1,dr=2000000000,mij;
int p;
int minim;
int fact(int n)
{
     int s,put;
     s = 0;
     put= 5;
     while (n/put > 0)
        {
            s = s + n/put;
            put = put * 5 ;
        }
     return s;
}
int main()
{
    //citire putin diferita de citirea ta
    freopen("fact.in","r",stdin);
    freopen("fact.out","w",stdout);

    scanf("%d",&p);
    minim = -1;

    while (st<=dr)
      {
      mij = (st + dr) / 2;
      int rezultat = fact(mij); // aici apelez doar o data functia si retin rezultatul, deci e o optimizare
      if (p == rezultat) {minim = mij; dr = mij - 1;}
      if (p > rezultat) st = mij + 1;
         else
          if (p < rezultat) dr = mij - 1;
      }
      printf("%d", minim);
    return 0;
}