Cod sursa(job #588866)

Utilizator stefanzzzStefan Popa stefanzzz 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");
}