Pagini recente » Borderou de evaluare (job #1036883) | Cod sursa (job #270524) | Cod sursa (job #739638) | Cod sursa (job #622337) | Cod sursa (job #21066)
Cod sursa(job #21066)
#include<stdio.h>
int main(){
FILE*in=fopen("fact.in","r");
FILE*out=fopen("fact.out","w");
int ap,s=0,p=1,n=5,n1,put=0;
fscanf(in,"%d",&ap);
if(ap==0){
fprintf(out,"1\n");
return 0;
}
while(p<ap){
p=p*5+1;
n=n*5;
put++;
}
if(p==ap){
fprintf(out,"%d\n",n);
return 0;
}
if((ap<p)&&(ap>p-put)){
fprintf(out,"-1\n");
return 0;
}
n1=n;
n=n/5;
s=(p-1)/5;
while(p>6){
p=(p-1)/5;
n1=n1/5;
put--;
if((ap-s)/p){
n=n+((ap-s)/p)*n1;
s=s+((ap-s)/p)*p;
}
}
while(s<ap){
n=n+5;
n1=n;
while((n1%5==0)&&(n1!=0)){
n1=n1/5;
s++;
}
}
if(s==ap)
fprintf(out,"%d\n",n);
if(s>ap)
fprintf(out,"-1\n");
return 0;
}