Pagini recente » Cod sursa (job #1400062) | Cod sursa (job #1136942) | Cod sursa (job #2530377) | Cod sursa (job #133709) | Cod sursa (job #2599878)
#include <stdio.h>
#include <stdlib.h>
long long verif (long long x)
{
long long z = 0 , k = 5;
while(x / k)
{
z += x / k;
k *= 5;
}
return z;
}
long long fact ( long long st , long long dr , long long p)
{
if(st >= dr)
return -1;
else
{
long long mij = (st + dr) / 2;
long long ok = verif(mij);
if(ok == p)
return mij;
if(ok < p)
return fact(mij + 1 , dr , p);
return fact(st , mij - 1 , p);
}
}
long long factorial (long long n , long long p)
{
if( p == 0)
return 1;
if( p == 1 )
return 5;
n = fact(1 , p * 5 , p);
if(n > 0)
while(n % 5)
n--;
return n;
}
int main()
{
long long p, n;
FILE *fp = fopen("fact.in","r");
fscanf(fp ,"%lld" , &p);
fclose(fp);
FILE *fi = fopen("fact.out" , "w");
fprintf(fi , "%lld" , factorial(n , p));
fclose(fi);
return 0;
}