これを、パソコンで、ビジレスで、解いてみようと・・・。
[設問]
[[[[[「問題6」305
次のABC、DEF、GHIはそれぞれ3けたの整数、
各位の数字A〜Iはすべて異なる数字を表しています。
ABC
DEF
+GHI
2006
0〜9の10個の数字の中で、A〜Iの9個のどれにも入らない数字が出てきます。
この数字が1通りであればその数字を2通り以上あれば小さい順にすべて書き出しなさい。
また、このとき、A〜Iの数字の入り方は全部で何通りありますか。
ただし、たとえば、次の例のように3個の3けたの整数の組み合わせが同じになる場合は、
合わせて1通りと数えます
123
456
+789
456
789
+123
789
456
+123
(06年度算数オリンピックファイナル問題[6]より)
ピンク文字は、Eプログラムの内容です。("<"と">"は、全角に変えています)
< A# z$
goto <TEST04
L "149-1" :XL 1 :C 1 :R :W1 :XN "149-W" :R :W1
XN "149-2" :XL 10 :NI 0,1 :R :W1
Vz$="I"
repeat
Vz$- :VA#=-1
repeat
VA#+
L "149-2" :N[z$][A#]
if z$="F" :UO=H-I :B O!0 :endif
if z$="G" :UO=G-I :B O!0 :UO=G-H :B O!0
XN "149-T1" :R :W1 :endif
if z$="F" :UO=F-I :B O!0 :UO=F-H :B O!0 :UO=F-G :B O!0
UN=G+H+I :UO=FRAC(N/10)*10 :B O=6 :endif
if z$="E" :UO=E-I :B O!0 :UO=E-H :B O!0 :UO=E-G :B O!0
UO=E-F :B O!0 :endif
if z$="D" :UO=D-I :B O!0 :UO=D-H :B O!0 :UO=D-G :B O!0
UO=D-F :B O!0 :UO=D-E :B O!0 :endif
AP "149-W" :* :XN "149-W" :R :W1
until A#=9 :<<OOO 1 OOO
XN "149-2" :R :W1 :XN "149-W" :XL 1 :C 1 :R :W1
until z$="D"
L "149-T1" :R :UA=G :UB=H :UC=I :C GHINO :R :W1 :<<OOO 2 OOO
<TEST01
L "149-2" :XN "149-3" :UK=D+E+F :UL=G+H+I :UM=K*10+L
UN=INT(M/10) :UO=FRAC(N/10)*10 :B O=0 :R :W1
XN "149-W" :XL 1 :C 1 :R :W1
Vz$="D"
repeat
Vz$- :VA#=-1
repeat
VA#+
L "149-3" :N[z$][A#]
if z$="C" :UO=C-I :B O!0 :UO=C-H :B O!0 :UO=C-G :B O!0
UO=C-F :B O!0 :UO=C-E :B O!0 :UO=C-D :B O!0 :endif
if z$="B" :UO=B-I :B O!0 :UO=B-H :B O!0 :UO=B-G :B O!0
UO=B-F :B O!0 :UO=B-E :B O!0 :UO=B-D :B O!0
UO=B-C :B O!0 :endif
if z$="A" :UO=A-I :B O!0 :UO=A-H :B O!0 :UO=A-G :B O!0
UO=A-F :B O!0 :UO=A-E :B O!0 :UO=A-D :B O!0
UO=A-C :B O!0 :UO=A-B :B O!0 :endif
AP "149-W" :* :XN "149-W" :R :W1
until A#=9 :<<OOO 3 OOO
XN "149-3" :R :W1 :XN "149-W" :XL 1 :C 1 :R :W1
until z$="A"
<TEST02
L "149-3" :XN "149-4" :UJ=A+B+C :UK=D+E+F :UL=G+H+I :UM=J*100+K*10+L
UN=INT(M/100) :UO=FRAC(N/10)*10 :B O=0 :R :W1 :<<OOO 4 OOO
XN "149-5" :B M=2006 :R :W1 :<・・・・・・・・ :<<OOO 5 OOO
XN "149-6" :UN=A+B+C+D+E+F+G+H+I :UO=45-N :NM 1 :R :W1 :<<OOO 6 OOO
XN "149-7" :@ M,O :R :W1 :<<OOO 7 OOO
<TEST03
L "149-5" :XN "149-8"
UJ=A*100+D*10+G
UK=B*100+E*10+H
UL=C*100+F*10+I :R :W1 :<<OOO 8 OOO
<TEST04
L "149-8" :XN "149-9" :R :VB#=SYS("LINE")
VA#=0
repeat
VA#+
VC#=[A#]J :VD#=[A#]K :if C#>D# :V[A#]J=D# :V[A#]K=C# :endif
VD#=[A#]K :VE#=[A#]L :if D#>E# :V[A#]K=E# :V[A#]L=D# :endif
VC#=[A#]J :VD#=[A#]K :if C#>D# :V[A#]J=D# :V[A#]K=C# :endif
r [A#] / [B#] :R
until A#=B#
UP=J*1000000+K*1000+L :NO 1 :@ O,P :S P :rr :R :W1 :<<OOO 9 OOO
END
<<□□□ 1 □□□
本来は、欄を、ABC、DEF、GHIと分けて、並べるところですが、
ここでは、3桁目、2桁目、1桁目と、分けて並べました。
1桁目のみを加えて答えの1桁目が6だけの組み合わせを残す。
1・2桁目のみを加えて、その答えの1・2桁目が06だけの組み合わせを残す。
という具合にやっていきます。
そして、1行の中の同じ数があるデータも除いていく。
これ、すべて、データが多すぎないようにする工夫でした。

<<□□□ 2 □□□
これは、1図の組み合わせを作るさいに、
1桁目のG〜I欄の組み合わせを作り(ダブり分のある行を除いたあと)、
合計の1桁目が6以外の組み合わせを除外するまえの組み合わせを残しておいて、
それを、A〜Cに移したのが、これです。

<<□□□ 3 □□□
ここで、同じ数のダブりのある組み合わせを、除きました。


<<□□□ 4 □□□
加算の答えの下2桁が06だけを残しました。


<<□□□ 5 □□□
さらに、合計が2006になるものを、残しました。



<<□□□ 6 □□□
設問では、0〜9の10個の数字の中で使われていない数字があると、
なっています。
そこで、各行ごとに、使われている数を加算しました。
O欄です。


<<□□□ 7 □□□
O欄で仕分けをしました。
すると、1行になりました。
お欄は、1でした。
これ、設問の前半の解答です。

<<□□□ 8 □□□
これからは、設問の後半を解いていきます。
5図のデータを基本にします。
JKL欄に、設問の計算式通りの数の並び方を再現しました。


<<□□□ 9 □□□
このJKL欄を、小さい順に並べ替えました。
さらに、P欄に、その数を、横に並べました。
つまり、J×1,000,000+K×1,000+L→P です。
そして、P欄を仕分けしました。
すると、360行になりました。
これが、後半の解答でした。


この項 終わり


C


































