Nu aveti permisiuni pentru a descarca fisierul grader_test8.ok
Cod sursa(job #588866)
Utilizator | Data | 9 mai 2011 20:41:29 | |
---|---|---|---|
Problema | Factorial | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.56 kb |
#include <fstream.h>
#include <math.h>
long long progr[14], p, s; int cnt5[14];
int i;
main(){
freopen("fact.in", "r", stdin);
freopen("fact.out", "w", stdout);
for(i=1;i<=13;i++)
progr[i]=progr[i-1]+floor(pow(5,i-1));
scanf("%lld", &p);
if(p==0){
printf("1");
return 0;}
for(i=1;progr[i]<=p;i++);
i--;
while(s!=p&&i>0){
for(cnt5[i];s<=p&&cnt5[i]<5;cnt5[i]++, s+=progr[i]);
s-=progr[i];
cnt5[i--]--;}
if(p==s){
s=0;
for(i=1;i<=13;i++)
s+=floor(pow(5,i))*cnt5[i];
printf("%lld", s);}
else
printf("-1");
}