Pagini recente » Cod sursa (job #237985) | Cod sursa (job #31725) | Cod sursa (job #1582804) | Cod sursa (job #2285303) | Cod sursa (job #268760)
Cod sursa(job #268760)
#include<stdio.h>
//#include<conio.h>
inline unsigned long long getfive(unsigned long long x)
{
unsigned long n=0;
while(x%5==0)
{
n++;
x/=5;
}
return n;
}
int main()
{
unsigned long long nr,in=0,out=0,i;
FILE *fi,*fo;
fi=fopen("fact.in","r");
fo=fopen("fact.out","w");
fscanf(fi,"%llu",&nr);
nr*=5;
if(!nr)
{
printf(fo,"1");
return 0;
}
for(i=25;i<=nr;i+=25)
{
if(i==nr){in=0;out=1;break;}
in+=getfive(i)-1;
//printf("testam pt i=%lu; acesta aduce %lu 5-uri. in devine %lu\n",i,getfive(i)-1,in);getch();
while(out<in)
{
//printf("scoatem %lu. pierdem 1 5-uri(out:%lu). nr devine %lu\n",nr,out+1,nr-5);getch();
out++;
nr-=5;
}
}
//printf("terminat. nr este %lu; in:%lu out:%lu",nr,in,out);getch();
if(in!=out)fprintf(fo,"-1");
else fprintf(fo,"%llu",nr);
return 0;
}