Cod sursa(job #6229)
Utilizator | HighScore skyel | Data | 18 ianuarie 2007 15:55:22 |
---|---|---|---|
Problema | Factorial | Scor | 85 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.58 kb |
#include<fstream.h>
#define input "fact.in"
#define output "fact.out"
int check(int p,int h)
{
while(h!=1)
{
if(p%h==0)
return 1;
h--;
h=h/5;
}
return 0;
}
int main()
{
long long h,x,p;
int gr;
ifstream fin(input);
ofstream fout(output);
fin>>p;
x=p;
h=1;
gr=0;
if(p>=1)
{
while(h*5+1<=p)
{
h=(h*5)+1;
gr++;
}
if(check(p+gr,h))
fout<<"-1";
else
{
while(h!=1)
{
x-=(x/h);
h--;
h=h/5;
}
fout<<x*5;
}
}
else
if(p==0)
fout<<"1";
fout<<"\n";
return 0;
}