Pagini recente » Cod sursa (job #2659742) | Cod sursa (job #1615167) | Cod sursa (job #2205977) | Cod sursa (job #927192) | Cod sursa (job #31519)
Cod sursa(job #31519)
/*
*
*
info-arena 2.0 - Arhiva - Factorial
*
*
*/
#include<stdio.h>
#define INPUT "fact.in"
#define OUTPUT "fact.out"
FILE *fin=fopen(INPUT, "r"),*fout=fopen(OUTPUT, "w");
long p;
inline void citire(){fscanf(fin, "%ld", &p);}
void rezolvare();
int main()
{
citire();
if(p!=0)
rezolvare();
else
fprintf(fout, "%d\n", 1);
fclose(fin);
fclose(fout);
}
void rezolvare()
{
long k=0,pas=1,cont=0,valoare=0,valad=5;
while(k<p)
{
++cont;
k+=pas;
valoare+=valad;
if(cont==5)
{
++k;
pas*=5;
++pas;
cont=0;
valad*=5;
}
while(k>p)
{
if(cont==0)
{
--pas;
pas/=5;
--k;
k-=pas;
--pas;
pas/=5;
valad/=5;
valoare-=valad;
valad/=5;
}
else
{
k-=pas;
--pas;
pas/=5;
cont=0;
valoare-=valad;
valad/=5;
}
}
}
if(pas)
fprintf(fout, "%ld\n", valoare);
else
fprintf(fout, "%ld\n", -1);
}