Cod sursa(job #2662888)
Utilizator | Luca Ilie LucaMihaiLM10 | Data | 24 octombrie 2020 18:55:19 |
---|---|---|---|
Problema | Factorial | Scor | 100 |
Compilator | c-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.72 kb |
#include <stdio.h>
int main() {
FILE *fin, *fout;
int p, st, dr, mij, p5, f;
fin = fopen( "fact.in", "r" );
fscanf( fin, "%d", &p );
fclose( fin );
st = 0;
dr = p * 5 + 1;
while ( dr - st > 1 ) {
mij = (st + dr) / 2;
p5 = 5;
f = 0;
while ( p5 <= mij ) {
f = f + mij / p5;
p5 *= 5;
}
if ( f < p )
st = mij;
else
dr = mij;
}
p5 = 5;
f = 0;
while ( p5 <= dr ) {
f = f + dr / p5;
p5 *= 5;
}
if ( f != p )
dr = -1;
fout = fopen( "fact.out", "w" );
fprintf( fout, "%d", dr );
fclose( fout );
return 0;
}