Cod sursa(job #40413)

Utilizator znakeuJurba Andrei znakeu Data 27 martie 2007 13:49:21
Problema Factorial Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <stdio.h>
int main()
{
	int k,k1=0,k2=0,kt,km,kmd,k1i,k2i,parc=0;
	
	FILE *in=fopen("fact.in","r");
	FILE *out=fopen("fact.out","w");
	fscanf(in,"%d",&k);
	fclose(in);
	
	if (k)
	{
		k1=k; kt=k1;
		k2=k1;
		while (kt>0)
		{
			k2-=kt/5;
			kt/=5;
		}
		km=(k1+k2)/2-(k1+k2)%2;
		k1i=k1; k2i=k2;
		kmd=0; kt=km;
		while (kt>0)
		{
			kmd+=kt/5;
			kt/=5;
		}
		while (km+kmd!=k && (k1!=k1i || k2!=k2i) || !parc)
		{
			if (km+kmd>k)
				k1=km+kmd;
			else
				k2=km+kmd;
			km=(k1+k2)/2-(k1+k2)%2;
			kmd=0; kt=km;
			while (kt>0)
			{
				kmd+=kt/5;
				kt/=5;
			}
			parc=1;
		}
		if (km+kmd==k)
			fprintf(out,"%d\n",km*5);
		else
			fprintf(out,"-1\n");
	}
	else
		fprintf(out,"1\n");
	fclose(out);
	
	return 0;
}