check(0,[]):-!.
check(0,_):-!,fail.
check(N,Xs):-
X is N mod 10,
select(X,Xs,Xs1),
!,
N1 is N//10,
check(N1,Xs1).
perm(6,_,[],Sum,Sum):-!.
perm(_,_,[],Sum,Sum):-Sum>0.
perm(Len,N,[X|Xs],Sum,Result):-
!,
between(N,9,X),
Sum1 is Sum+X^5,
Len1 is Len+1,
perm(Len1,X,Xs,Sum1,Result).
sum([],Sum,Sum):-!.
sum([X|Xs],Sum,Result):-
Sum1 is Sum+X,
sum(Xs,Sum1,Result).
search(Sum):-
perm(0,0,Xs,0,Sum),
not(Xs=[1]),
check(Sum,Xs).
main:-
findall(E,search(E),Es),
sum(Es,0,Ans),
write(Ans).
最終更新:2014年12月01日 08:27