Pagini recente » Cod sursa (job #1026810) | Cod sursa (job #548996)
Cod sursa(job #548996)
#include<stdio.h>
#include<stdlib.h>
int nearPow5(int n)
{
int aux = n, k = 0;
while(aux >= 5){
aux /= 5;
k++;
}
return k;
}
int pow(int n, int k)
{
int i, aux = n;
if(k == 0)
return 1;
for(i = 1; i < k; i++)
n = n * aux;
return n;
}
int calc(int P)
{
int k = P * 5, q = 0, aux;
int n = nearPow5(k);
int m = pow(5,n), acc = 0, i;
for(i = 0; i < n; i++)
acc = acc + pow(5, i);
q = acc;
if(q == P)
return m;
m += 5;
while(q != P) {
aux = m;
while(aux) {
if(aux % 5 == 0){
aux /= 5;
q++;
}
else
break;
}
if(q == P)
return m;
else if(q > P)
return -1;
m += 5;
}
return m;
}
int main()
{
FILE *f = fopen("fact.in", "r");
FILE *g = fopen("fact.out", "w");
int P;
fscanf(f, "%d", &P);
fprintf(g, "%d", calc(P));
fclose(f);
fclose(g);
return 0;
}