Cod sursa(job #264699)
Utilizator | Radu Bumbacea Radu_Bumbacea | Data | 22 februarie 2009 16:47:40 |
---|---|---|---|
Problema | Factorial | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.49 kb |
#include <stdio.h>
int main()
{
int n,p,q,k,t;
int a[40];
freopen("fact.in","r",stdin);
freopen("fact.out","w",stdout);
scanf("%d",&p);
q=1;k=0;n=0;
while ((q-1)/4<=p)
{
q=q*5;
k=k+1;
}
q=q/5;k=k-1;
for (int i=k;i>=1;i=i-1)
{
t=(q-1)/4;
a[i]=p/t;
if (a[i]>4)
{
printf("-1");
return 0;
}
p=p-(t*a[i]);
q=q/5;
}
for (int j=k;j>=1;j=j-1)
{
n=n*5+a[j];
}
n=n*5;
if (n==0) printf("1");
else printf("%d",n);
return 0;
}