Cod sursa(job #200129)

Utilizator IrnukIrina Grosu Irnuk Data 22 iulie 2008 13:31:34
Problema Factorial Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
/*factorial 
Factorial

Se da un numar intreg P. Sa se gaseasca cel mai mic numar natural strict pozitiv N pentru care N! are exact P cifre de 0 la sfarsit.

Se stie ca N! = 1 * 2 * 3 * .... * (N - 1) * N.

Date de intrare
Fisierul fact.in va contine pe prima linie numarul intreg P.

Date de iesire
Pe prima linie a fisierului fact.out se va scrie acel numar N care indeplineste condiitle impuse sau -1 daca nu exista un astfel de N.

Restrictii
0 = P = 10^8 
*/

#include<fstream.h>

unsigned long p,n;

ifstream fin("fact.in");
ofstream fout("fact.out");

unsigned long sparge(unsigned long n)
{
	unsigned long numara=0;
	while(n%5==0)
	{
		n=n/5;
		numara++;
	}
	return numara;
}

int main()
{
	fin>>p;
	if(p==0) fout<<"1\n";
	else
		if(p<10000000)
		{
			while(p>0)
			{
				n+=5;
				p-=sparge(n);
			}
		}
		else
		{
			p-=10000000;
			n=40000010;
			
			while(p>0)
			{
				n+=5;
				p-=sparge(n);
			}
		}

	fout<<n<<'\n';
	fout.close();
	return 0;
}