Cod sursa(job #1768611)
Utilizator | bogdan bancuta bogdi1 | Data | 1 octombrie 2016 11:45:29 |
---|---|---|---|
Problema | Factorial | Scor | 15 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.61 kb |
#include <cstdio>
using namespace std;
int put5[15];
long long nr0(int n)
{
long long r=n/5;
int i;
for(i=1; i<=12 && n>put5[i]; i++)
r+=i-1;
return r;
}
int main()
{ freopen("fact.in", "r",stdin);
freopen("fact.out", "w",stdout);
int p,i,pas;
scanf("%d", &p);
put5[0]=1;
for(i=1; i<=12; i++)
put5[i]=5*put5[i-1];
i=0;
pas=1<<30;
while(pas!=0){
if(i+pas<=2147483648 && nr0(i+pas)<p)
i+=pas;
pas/=2;
}
if(nr0(i)==p)
printf("%d", i+1);
else
printf("-1");
return 0;
}