Mai intai trebuie sa te autentifici.
Cod sursa(job #333826)
| Utilizator | Data | 23 iulie 2009 23:46:42 | |
|---|---|---|---|
| Problema | Factorial | Scor | 25 |
| Compilator | c | Status | done |
| Runda | Arhiva de probleme | Marime | 0.79 kb |
#include <stdio.h>
int st=1,dr=10000,mij;
long long p;
int minim;
int fact(int n)
{
int s,put;
s = 0;
put= 5;
while (n/put > 0)
{
s = s + n/put;
put = put * 5 ;
}
return s;
}
int main()
{
//citire putin diferita de citirea ta
freopen("fact.in","r",stdin);
freopen("fact.out","w",stdout);
scanf("%d",&p);
minim = -1;
while (st<=dr)
{
mij = (st + dr) / 2;
int rezultat = fact(mij); // aici apelez doar o data functia si retin rezultatul, deci e o optimizare
if (p == rezultat) {minim = mij; dr = mij - 1;}
if (p > rezultat) st = mij + 1;
else
if (p < rezultat) dr = mij - 1;
}
printf("%d", minim);
return 0;
}
