Mai intai trebuie sa te autentifici.
Cod sursa(job #480230)
Utilizator | Data | 27 august 2010 00:37:13 | |
---|---|---|---|
Problema | Factorial | Scor | 40 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.79 kb |
// Afla ce numar factorial are p cifre de zero la final
#include <fstream>
using namespace std;
int main() {
FILE* fin = fopen("fact.in","r");
FILE* fout = fopen("fact.out","w");
int p, l, r, m, nr_zero, old;
bool flag = true;
fscanf(fin, "%d", &p);
fclose(fin);
if (p==0) {
fprintf(fout, "%d", 1);
fclose(fout);
return 0;
}
old = -1;
l = 0;
r = 50000000;
while ((l!=r) && (flag)) {
m = (l+r) / 2;
flag = (m!=old);
nr_zero = 0;
int tmp = m;
while ( tmp>=5) {
nr_zero += tmp/5;
tmp = tmp/5;
}
if (p>nr_zero)
l = m;
else if (p<nr_zero)
r = m;
else l = r;
old = m;
}
if (!flag) {
fprintf(fout, "%d", -1);
fclose(fout);
return 0;
}
while (m%5!=0)
m--;
fprintf(fout, "%d", m);
fclose(fout);
return 0;
}