Cod sursa(job #1274492)
| Utilizator | Data | 23 noiembrie 2014 21:37:44 | |
|---|---|---|---|
| Problema | Factorial | Scor | 90 |
| Compilator | c | Status | done |
| Runda | Arhiva de probleme | Marime | 0.6 kb |
#include <stdio.h>
#include <stdlib.h>
int cifre(int x)
{
int k=0;
while(x)
{
k=k+x/5;
x=x/5;
}
return k;
}
int binar(int st,int dr,int p)
{
if(st==dr) return 0;
if(cifre((st+dr)/2)>p) return binar(st,(st+dr)/2,p);
if(cifre((st+dr)/2)<p) return binar((st+dr)/2+1,dr,p);
return ((st+dr)/2)-((st+dr)/2)%5;
}
int main()
{
FILE *in,*out;
int p,n;
in=fopen("fact.in","r");
out=fopen("fact.out","w");
fscanf(in,"%d",&p);
if(binar(1,5*p,p)) n=binar(1,5*p,p);
else n=-1;
fprintf(out,"%d",n);
return 0;
}
