Cod sursa(job #694236)

Utilizator visanrVisan Radu visanr Data 27 februarie 2012 19:27:27
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <cstdio>
#include <cstdlib>
#define N 100000000
using namespace std;


int put[200],nr[200],n;


void init()
{
     put[0]=1;
     nr[0]=0;
     for(n=1;nr[n-1]<=N;n++)
     {
                            nr[n]=put[n-1]+nr[n-1];
                            put[n]=put[n-1]*5;
     }
}


int caut(int x)
{
    for(int i=0;i<n;i++) if(nr[i]<=x && nr[i+1]>x) return i;
    return -1;
}
 
 
int rez(int p)
{
    int r=0,i;
    while(p)
    {
            i=caut(p);
            r=r+p/nr[i]*put[i];
            p=p%nr[i];
    }
    return r;
}


int main()
{
    freopen("fact.in","r",stdin);
    freopen("fact.out","w",stdout);
    int p,rezultat,i;
    init();
    scanf("%i", &p);
    if(p==0)
    {
              printf("1\n"); 
    }else
    {
      rezultat=rez(p);
      if(rezultat==rez(p+1)) printf("-1\n");
      else printf("%i\n", rezultat);
    }
    scanf("%i", &i);
    return 0;
}