Cod sursa(job #188803)

Utilizator laplaceConstantin Macari laplace Data 9 mai 2008 23:57:06
Problema Factorial Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.56 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 int MAX=10000*10000;

long int n;

long int factor(long int m){
     int s=1;
     long int i;
     if(m==0)
             return 1;
     if(m==1)
             return 1;
     else
         for(i=1;i<=m;i++)
                 s*=i;
     return s;
}

long int min(long int m,long int l){
    return m<n?m:n;
}

/*long int pow(int k){
     if(k==0)
             return 1;
     else
         return 10*pow(k-1);
}*/

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

long int fact(long int n){
     long int i;
     long int a[1000];
     long int h=0,aux=0;
     for(i=0;i<MAX;i++){
                   if(ten(factor(i))==n){
                                 a[h]=i;
                                 h++;              
                                 }                               
                   }
     for(i=0;i<h;i++)
                     if(min(a[i],a[i+1]))
                                         aux=a[i];
     return aux;
}

int main(){
    freopen("fact.in","r",stdin);
    freopen("fact.out","w",stdout);
    scanf("%ld",&n);
    long int rez=fact(n);
    printf("%ld",rez);
    return 0;
}