declare % A B C * D E F % _______________ % G H I % J K L % M N O % _______________ % P Q R S T proc {Twice Root} A B C D E F G H I J K L M N O P Q R S T C1 C2 C3 in Root = solution(a:A b:B c:C d:D e:E f:F g:G h:H i:I j:J k:K l:L m:M n:N o:O p:P q:Q r:R s:S t:T) Root ::: 0#9 C1 :: 0#1 C2 :: 0#2 C3 :: 0#1 %CarriesLow ::: 0#9 %CarriesHigh ::: 0#1 {For 0 9 1 proc {$ I} {FD.exactly 2 Root I} end } 100*G + 10*H + I + 1000*J + 100*K + 10*L + 10000*M + 1000*N + 100*O =: 10000*P + 1000*Q + 100*R + 10*S + T (100*D + 10*E + F)*C =: 100*G + 10*H + I (100*D + 10*E + F)*B =: 100*J + 10*K + L (100*D + 10*E + F)*A =: 100*M + 10*N + O (100*A + 10*B + C) * (100*D + 10*E + F) =: 10000*P + 1000*Q + 100*R + 10*S + T % Carry restrictions T =: I S + 10*C1 =: H + L R + 10*C2 =: G + K + O + C1 Q + 10*C3 =: J + N + C2 P =: M + C3 {FD.distribute generic(order:size) Root} end {ExploreOne Twice}
The only solution then is
Q=R=0, D=H=1, A=B=2, J=M=3, C=P=4, K=N=5, I=T=6, E=G=7, L=O=8, F=S=9 224 * 179 _________ 716 358 358 _________ 40096