Cod sursa(job #1290051)

Utilizator AndreiGrigorasAndrei Grigoras AndreiGrigoras Data 10 decembrie 2014 19:17:58
Problema Factorial Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.35 kb
#include <fstream>
using namespace std;
ifstream f("fact.in");
ofstream g("fact.out");
unsigned long long v[1000];
unsigned long long put[1000];
unsigned int nr,x,copie1;

void calc()
{ unsigned int i,j;

    for(i=1;i<=1000;i++)
        v[i]=1;
        i=1;
    while(i!=11)
    {
        for(j=1;j<=i;j++)
        v[i]*=5;

        for(j=5;j<=v[i];j*=5)
            put[i]=put[i]+v[i]/j;


        i++;
    }
}
void citire()
{
    f>>nr;
}
int cauta(unsigned long long  x)
{
   unsigned long long i,copie,nr1,q=0,copie2,t=0;
    for(i=1;i<=10;i++)
        if(put[i]==x)
        {q=1;
            return v[i];}
    if(q==0)
      {

       for(i=1;i<=9;i++)
    {
        if(x>put[i] && x<put[i+1])
        {
            nr1=v[i];
            copie=x;
            copie1=nr1;
            while(copie1<v[i+1])
            {
                nr1+=5;
                copie2=nr1;
                while(nr1!=0)
                {
                    t+=nr1/5;
                    nr1=nr1/5;
                }

                if(t==x)
                {
                    return copie2;
                }
                else {t=0;
                nr1=copie2;}
            }

        }
        if(copie1>=v[i+1]) return -1;
    }
      }
}
int main()
{
    citire();
    calc();
    g<<cauta(nr);

    return 0;
}