Pagini recente » Cod sursa (job #672495) | Cod sursa (job #3177564) | Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #220133)
Cod sursa(job #220133)
#include <stdio.h>
int fact_zero(unsigned long int a) // calculeaza cate 0-uri are fact de a
{
unsigned long int i = 5, z = 0;
while(a/i != 0)
{
z = z + a/i;
i = i * 5;
}
return z;
}//works
int div_5(unsigned long int a)
{
unsigned long int i;
for(i=a; i>0; i--)
if(i%5 == 0)
{
printf("%lu",i);
return 1;
}
printf("error!");
return 0;
} //works
int main()
{
unsigned long int a = 1, b = 100000000, m, cfr_0, stefan;
freopen ("fact.in","r",stdin);
freopen ("fact.out","w",stdout);
scanf("%lu", &cfr_0); //citesc cate cfr 0 vreau sa aiba fact
// printf("%lu",fact_zero(40010));
if(cfr_0 >= 0 && cfr_0<=100000000)
if(cfr_0 == 0) printf("1");
else
while(a <= b)
{
m = a + (b-a)/2; //mid = lo + (hi-lo)/2;
stefan = fact_zero(m);
if(stefan < cfr_0)
a = m+1;
else if(stefan > cfr_0)
b = m-1;
else //(stefan == cfr_0)
{
div_5(m);
return 0;
}
}
printf("-1");
return 0;
}