Pagini recente » Cod sursa (job #2307119) | Cod sursa (job #1151608) | Cod sursa (job #893011) | Cod sursa (job #3242134) | Cod sursa (job #31516)
Cod sursa(job #31516)
/*
*
*
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();
rezolvare();
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-=pas;
--pas;
pas/=5;
valad/=5;
valoare-=valad;
valad/=5;
}
else
{
k-=pas;
--pas;
pas/=5;
cont=0;
valoare-=valad;
valad/=5;
}
}
}
fprintf(fout, "%ld\n", valoare);
}