Cod sursa(job #497259)
| Utilizator | Data | 1 noiembrie 2010 22:05:20 | |
|---|---|---|---|
| Problema | Factorial | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.51 kb |
#include<stdio.h>
int m;
int cinci(long n)
{
m=0;
while(n)
{
m=m+(n/5);
n=n/5;
n-=n%5;
}
return m;
}
int main()
{
int p,i,c,st=0,dr=400000015;
scanf("%d",&p);
//caut binar rezultatul care sa se potriveasca
if(p)
while(st<dr)
{
if(cinci((st+dr)/2)==p) st=dr=((st+dr)/2)-((st+dr)/2)%5;
else if(cinci((st+dr)/2)>p) dr=(st+dr)/2;
else if(cinci((st+dr)/2)<p) st=(st+dr)/2;
}
if(!p) printf("1");
if(st==dr) printf("%d",dr);else if(st>dr) printf("-1");
return 0;
}
