Cod sursa(job #572139)
| Utilizator | Data | 5 aprilie 2011 04:50:09 | |
|---|---|---|---|
| Problema | Factorial | Scor | 30 |
| Compilator | c | Status | done |
| Runda | Arhiva de probleme | Marime | 0.54 kb |
#include "stdio.h"
#include "malloc.h"
#include "string.h"
int main()
{
FILE *f,*g;
f=fopen("fact.in","r");
g=fopen("fact.out","w");
int x,i,n;
int v[2][10];
fscanf(f,"%d",&x);
if(x==0)
fprintf(g,"%d",1);
else
{
n=0;
i=0;
v[0][0]=1;
v[1][0]=1;
while(v[1][n]<x)
{
n++;
v[0][n]=v[0][n-1]*5;
v[1][n]=v[1][n-1]*5+1;
}
for(;n>=0;n--)
{
if(x==v[1][n]*5)
{
fprintf(g,"%d",-1);
return(0);
}
while(x>=v[1][n])
{
x-=v[1][n];
i+=v[0][n];
}
}
fprintf(g,"%d",i*5);
}
return(0);
}
