Pagini recente » Cod sursa (job #1869932) | Cod sursa (job #316718) | Cod sursa (job #1648870) | Cod sursa (job #1403766) | Cod sursa (job #200132)
Cod sursa(job #200132)
/*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<5000000)
{
while(p>0)
{
n+=5;
p-=sparge(n);
}
}
else
{
p-=5000000;
n=20000005;
while(p>0)
{
n+=5;
p-=sparge(n);
}
}
fout<<n<<'\n';
fout.close();
return 0;
}