Cod sursa(job #291600)

Utilizator vlasceanuVlasceanu Razvan vlasceanu Data 30 martie 2009 02:30:44
Problema Factorial Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <cstdlib>
#include <iostream>
#include <limits>
using namespace std;
unsigned long int cp[] = {0,5,25,125,625,3125,15625,78125,390625,1953125,9765625,48828125,244140625};
int ex[] = {0,0,1,3,6,10,15,21,28,36,45,55,66,78};




unsigned long int Ev(unsigned long int p)
{
 if (p==0) return 1;
 unsigned long int aux=5;    
 unsigned long int rez = p*5;
 for(int i=0;i<=13;i++) 
 if (cp[i]>=rez)
 {
  if(cp[i]==rez) rez-=5*ex[i];
  else if(cp[i-1]<=rez) rez-=5*ex[i-1];
  else rez-=5*(ex[i-1]-1);
  return rez;              
 }
 return rez;
}


int main(int argc, char *argv[])
{
    
    long unsigned int pp;
    freopen("fact.in","r",stdin);
    cin >> pp;   
    fclose(stdin);
    freopen("fact.out","w",stdout);
    unsigned long int i1,i2;
    i1=Ev(pp);
    i2=Ev(pp+1);
    if(i1==i2) cout << -1;
    else cout<<i1;
    fclose(stdout);
    return EXIT_SUCCESS;
}