Pagini recente » Cod sursa (job #2933778) | Cod sursa (job #2731636) | Cod sursa (job #2557645) | Cod sursa (job #2853776) | Cod sursa (job #446530)
Cod sursa(job #446530)
#include <stdio.h>
#include <math.h>
int p;
int min(int a,int b)
{
if (a<b) return a;
return b;
}
int nrcinci(int n)
{
int rez=0,i;
for (i=1;i<=13;i++)
rez+=n/pow(5,i);
return rez;
}
int cauta(int n1,int n2)
{
//printf("%d %d\n",n1,n2);
if (n1==n2)
{
//printf("n1 = %d\n",n1);
if (nrcinci(n1)==p)
return n1;
else
return -1;
}
int aux=(n1+n2)/2;
if (nrcinci(aux)==p)
return aux;
if (nrcinci(aux)<p)
return cauta(aux+1,n2);
return cauta(n1,aux);
}
int main()
{
FILE *in,*out;
in=fopen("fact.in","r");
out=fopen("fact.out","w");
fscanf(in,"%d",&p);
//p=10;
int n=floor(log(4*p+1)/log(5));
int N1=pow(5,n); // <5^13
int N2=pow(5,n+1);
//printf("%d %d\n",N1,N2);
int rez=cauta(N1,N2);
//printf("%d \n\n",cauta(N1,N2));
//printf("%d ",nrcinci(9765625));
//getchar();
fprintf(out,"%d",rez);
return 0;
}
/*
25 6
125 31
625 156
3125 781
15625 3906
78125 19531
390625 97656
1953125 488281
9765625 2441406
48828125 12207031
244140625 61035156
1220703125 305175781
*/