Cod sursa(job #188825)

Utilizator laplaceConstantin Macari laplace Data 10 mai 2008 01:38:01
Problema Factorial Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
/*Se da un numar intreg P. Sa se gaseasca cel mai mic numar natural strict 
pozitiv N pentru care N! are exact P cifre de 0 la sfarsit.

Se stie ca N! = 1 * 2 * 3 * .... * (N - 1) * N.
Exemplu : 0 --> 1
          2	--> 10
          10 --> 45*/

#include<stdio.h>
#include<stdlib.h>

const long long MAX=1000000000LL;

long long n;

long long factor(long long m){
     if (0 == m)
        return 1;
     else
         return (m * factor(m-1));
}

long long ten(long long m){
    long long i=0;
    while(m>=5){
                if(m%5==0)
                          i++;
                m/=5;
                }
    return i;
}  

long fact(long long a,long long b,long long n){
     long long c=(a+b)/2;
     if(ten(factor(c))==n)
                          return c;
     else
         if(a<b)
                if(ten(factor(c))<n)
                                    fact(c+1,b,n);
                else
                    fact(a,c-1,n);
}

int main(){
    freopen("fact.in","r",stdin);
    freopen("fact.out","w",stdout);
    scanf("%lld",&n);
    long long a=0LL;long long b=MAX;
    long rez=fact(a,b,n);
    if(rez)
           printf("%ld",rez);
    else(printf("%d",-1));
    return 0;
}