Mai intai trebuie sa te autentifici.
Cod sursa(job #353)
Utilizator | Data | 11 decembrie 2006 08:11:06 | |
---|---|---|---|
Problema | Factorial | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.92 kb |
#include <stdio.h>
int main (void) {
FILE * fi = fopen("fact.in","rt");
FILE * fo = fopen("fact.out","wt");
long long muj5[100],put5[100];
muj5[0]=0;
put5[0]=1;
long long i;
for (i=1; i<=23; i++) {
muj5[i]=muj5[i-1]*5+1;
put5[i]=put5[i-1]*5;
};
long long n,numar,ncur;
fscanf(fi,"%lld",&n);
numar=0; ncur=n;
char invalid=0;
for (i=22; i>=1; i--) {
if ((put5[i]*(ncur/muj5[i]))==put5[i+1]) {
invalid=1;
};
numar+=put5[i]*(ncur/muj5[i]);
ncur%=muj5[i];
};
if (n==0) { invalid=0; numar=1; };
if (!invalid) {
fprintf(fo,"%lld\n",numar);
} else {
fprintf(fo,"-1\n");
};
fclose(fi);fclose(fo);
return 0;
};