◆東京都 ぽこぺん さんからの解答
【問題1】
西暦2004年は平成16年ゆえ
(H,P)=(1、6)
与式に代入
1A66Y+NEW-YEAR=2004
1A66Y+NEW =2004+YEAR
左辺≧10662
∴Y=8 or 9
(T)Y=8のとき
1A668+NEW-8EAR=2004
8+W-R=10α +4
α+6+E-A=10β +0
β+6+N-E=10γ +0
γ+10+A-8= 2
(α、β、γ = 0 or 1 繰り上がりを表わす値)
まとめると
4+W-R=10α (1)
α+6+E-A=10β (2)
β+6+N-E=10γ (3)
γ+A=0 (4)
(4)より(γ、A)=(0、0)
(2)α+6+E=10β、6≦α+6+E≦16
6≦ 10β ≦16
∴β=1
α+6+E=10
α+E=4
(α、E)=(0、4)or(1、3)
(3) 7+N-E=0
7+N=E=3or4
N≧0 ゆえ、矛盾
(U)Y=9のとき 同様に γ+A=1 より
(γ、A)=(0、1)or(1、0)
(U−i)γ=0、A=1のとき
同様に 7+N=E=4or5 を得る
N≧0 ゆえ、矛盾
(U−ii)γ=1、A=0 のとき
同様に (α、E)=(0、4)or(1、3) を得る
7+N-E=10
N-E=3
∴(N,E)=(7、4)or(6、3)
P=6 ゆえ N≠6
∴N=7
(N,E,α)=(7、4、0)
5+W-R=10α
5+W-R=0
5=R-W
9 4 Y=9,E=4 X以上より
8 3 〇
7 2 N=7 X
6 1 P=6,H=1 X
5 0 A=0 X
H A P Y N E W R 1 0 6 9 7 4 3 8与式は 10669+743-9408=2004
◆神奈川県の小学生 林 直人 さんからの解答
【問題1】
まず、Hが1で、Pが6だということが、2004年が平成16年だということから分かりました。
次に、
1×10000+A×1000+6×110+Y×1+N×100+E×10+W×1-Y×1000-E×100-A×10-R×1=2004
という式が立てられ、数が分かっている10660を2004から引くと、-8656になります。
それは、990A+100N+W-999Y-90E-Rの答えになります。
そして、計算をしてみると、Yが9の時しかその式が成り立たないことが分かります。
なぜなら、999Y+90E+Rが、Aを0としても、100N+Wの最低値である203プラス8656以上にならなくてはいけないからです。
そして、Yがたとえ9であるとしても、Aが1以上だとYをほとんど打ち消してしまうので、Aは必ず0でなくてはいけないのです。
次に、N、E、R、Wを求めます。式を立てると
100N+W-90E-R=8991-8656=335
となります。
つまり、NとEの差は330前後になるはずです。
そのことから、NとEの差は3だということが分かり、残った数の中で、差が3となる組み合わせ、かつ、この式に当てはまるのは(7、4)です。
そして、W、Rの組み合わせは(8、3)、(3、8)、(7、2)、(2、7)のどれかになります。
Nが7と決まってしまったので、(7、2)(2、7)の組み合わせは、同じ数を使ってはいけないという問題の条件に反することになり、使えません。
(8、3)(3、8)の組み合わせで当てはまる方を考えると、W、Rの順に、3、8となります。
これですべての文字が求められました。
表を書いて推理していったら何とかできました。
ぼくは、時間をかけて問題を解くのが好きなので楽しかったです。
この問題でぼくが使った、10の位なら10倍し、100の位なら100倍するというやり方は効率的なやり方だと思います。
もっと早いやり方があったら知りたいです。
また、ぼくは算数が好きなので来週の問題もやってみたいです。
◆京都府の中学校2年生 pirochies さんからの解答
【問題1】
解答は、H=1,A=0,P=6,Y=9,N=7,E=4,W=3,R=8です。
覆面算の答えは、10669+743-9408=2004です。
そう考えた理由
H=1,P=6とということははじめにわかっています。
これを筆算にあらわすと、 1A66Y
+ NEW
- YEAR
= 2004
です。
Aには1か0が入りますが、1はすでに使われているので、Aは0です。
すると、Yが9じゃないと、覆面算の答えが2004にはなりません。
よってYは9です。
ここまでを筆算にすると、 10669
+ NEW
- 9E0R
2004
です。
次に、十の位と百の位に注目します。
十の位「6+E−0=10」 →Eは3で一の位が繰り上がる 又は Eは4で一の位は繰り上がらない
百の位「6+N−E=0か10」
十の位より、Eは3か4です。
しかし、Eを3とした場合、
百の位は「1(繰り上がり)+6+N−3=10」となり、Nが6でないと成り立たなくなります。
6はすでに使われているので、N=6には出来ません。
つまり、E=3とするとあわなくなります。
よってE=4。
Eは4なので、百の位は「1(繰り上がり)+6+N−4=10」
よってN=7。
ここまでを筆算にすると、 10669
+ 74W
- 940R
2004
最後に、1の位。まだ使われていない数は(2,3,5,8)の4種類です。
この4種類の数を使って、「9+W−R=4」となるのは、W=3、R=8のときだけです。
よって、W=3,R=8。
だから、各文字に当たる数字は[H=1,A=0,P=6,Y=9,N=7,E=4,W=3,R=8]
式は、[10669+743-9408=2004]となりました。
感想:
僕は覆面算に興味があるので、このような問題は大好きです。
実ははじめ、H=1,P=6としなければいけないのがわからなくて、「できた!」とおもったら「Pは6です」といわれてやり直し、、、ということがありました。
難しそうな問題でしたが、がんばって理詰めで解くことが出来ました。
来週の問題も挑戦しようと思います。
◆東京都 ぽこぺん さんからの解答
【問題1】
[1] 千の位を考えて,A≦2 かつ Y≧7 を得る。
[2] このとき一の位を考えると,十の位からの借りを含む
10+Y+W−R = 4
となることはあり得ない 。
(∵13+W ≦ 6+Y+W = R)
したがって,
Y+W−R = 4 または 14
である。
[3] このとき十の位は
6+E−A = 0 または 10
7+E−A = 0 または 10
のいずれかとなる。
A≦2 だから百の位からの借りを含む場合はあり得ない。
さらに,
4+E ≦ 6+E−A = 0 または 10
5+E ≦ 7+E−A = 0 または 10
であるから右辺は 10 に確定する。
したがって,(A, E) の組は
(A, E) = (0, 4), (0, 3), (1, 5), (1, 4), (2, 5)
のいずれかである。
(E=6 は P と重複する)
[4] このとき百の位は
7+N−E = 0 または 10
である。
E=3, 4,5 だから千の位からの借りはあり得ない。
さらに,右辺は 10 に確定する。このとき,E と N の組は
(E, N) = (4, 7), (5, 8)
のどちらかである。
(N=6 は P と重複する)
[5] このとき千の位は
11+A−Y = 2
であるから,
(A, Y) = (0, 9)
と確定する。
したがって,[3] と [4] より
(E, N) = (4, 7)
と確定する。
このとき,[2] から [3] への繰り上がりはないから
9+W−R = 4 ⇒ 5+W = R
となるので,他の文字との重複を考えて
(W, R) = (3, 8)を得る。
【問題2】
次のような方法に基づいて 9 通りの解が得られました。
【1】演算子
演算子を「+」「−」「*」「÷」「^」「.」の6種類とする。
各演算子の意味と制限は次のとおり:
・「+」… x+y で x に y を加える (制限なし) ・「−」… x−y で x から y を引く (制限なし) ・「*」… x*y で x に y を掛ける (制限なし) ・「/」… x/y で x を y で割る (制限: y ≠ 0) ・「^」… x^y で x を y 乗する (制限: 注1) ・「.」… x.y で x に y を後接する(制限: x,y は計算結果でない)
・y=0 のとき: ‐x=0 のとき: 不能 ‐それ以外のとき: 1 ・y>0 のとき: ‐y が整数のとき: ‐|x^y| の結果が 1010 を超えるとき: 不能 *) ‐それ以外のとき: x*x*…*x (y個の積) ‐それ以外のとき: ‐x>0 のとき: exp(y logx)) ‐x=0 のとき: 0 ‐x<0 のとき: ‐1/y が整数となり,それが奇数のとき: -((-x)^y) ‐それ以外のとき: 不能 ・y<0 のとき ‐x=0 のとき: 不能 ‐それ以外のとき: 1/(x^(-y))*) 理論上は (ab)1/b などの中間結果で 1010を超えることがあり得るが,本問の場合はこの制限をつけても問題がないことを確認した。
【2】演算の順序
6個の数,5個の演算子を用いて演算を行う順序を考える。
xとyに演算opを施すことを次の木構造(演算木)で表現する: op┳x
┗y
演算子を n 個含む演算木を T(n) と書くと,
T(0):
数
T(n+1):
op┳T(r)
┗T(n-r)
(r=0,…,n)
となるが,図が増えるのを避けるために r≦n-r とした演算木を以下に示す。
演算木の接続構造はこれで尽くしている。
ただし,演算を●で,数を□で表す。T(0):
□
T(1):
●┳□
┗□
T(2):
●┳□
┗●┳□
┗□
T(3):
●┳□
┗●┳□
┗●┳□
┗□
●┳●┳□
┃ ┗□
┗●┳□
┗□
T(4):
●┳□
┗●┳□
┗●┳□
┗●┳□
┗□
●┳□
┗●┳●┳□
┃ ┗□
┗●┳□
┗□
●┳●┳□
┃ ┗□
┗●┳□
┗●┳□
┗□
T(5):
●┳□
┗●┳□
┗●┳□
┗●┳□
┗●┳□
┗□
●┳□
┗●┳□
┗●┳●┳□
┃ ┗□
┗●┳□
┗□
●┳□
┗●┳●┳□
┃ ┗□
┗●┳□
┗●┳□
┗□
●┳●┳□
┃ ┗□
┗●┳□
┗●┳□
┗●┳□
┗□
●┳●┳□
┃ ┗□
┗●┳●┳□
┃ ┗□
┗●┳□
┗□
●┳●┳□
┃ ┗●┳□
┃ ┗□
┗●┳□
┗●┳□
┗□
したがって,本問の T(5) の場合には 6 通りの構造があり,順序を含めると,
各構造に対する順序を考慮して
16+4+8+8+2+4=42 通りある。
この 5 ヶ所の●に 6 種類の演算子を入れ,6 ヶ所の□に 6 通りの数を入れる。
ただし,数を入れるときは,2 つの「2」は区別しない。
また,重複を避けるため,T(1) の部分木において演算が「+」または「*」の場合には,
(上段の数)<(下段の数)となるようにする。
演算結果に関してはこのルールは適用しない。
【3】結果
以上の準備を元にパソコンで全解探索を行ったところ,本質的に異なる解として次の 9 通りの結果を得た。
(後接演算子「.」は表示しない)
●オリジナル
((2 + 2) * 3) * 167 = ((2 * 2) * 3) * 167 = (2 2* 3) * 167
●解答
(1) 12 * (6 3 - 7 2)
(2) 6 * (71+2 - 3 2)
(3) 6 * (7 3 - (1 + 2) 2)
(4) 12 3 + 276
(5) 3 * (27 2 - 61)
(6) 3 * (26 2 - (1 + 7))
(7) (3 + 6 * 7) 2- 21
(8) (3 * 672) - 12
(9) (6 + 7 * 23) * 12
以上
【感想】
時間に追われるように,あまり考えることもなく,あわててperlでプログラムを作って実行させてしまいました。
実行時間はPentium III,650MHzという遅いマシン上のLinuxで数分でした。
この解答を書く方が時間がかかってしまいました。
◆愛知県 Y.M.Ojisan さんからの解答
【問題1】
10669+743−9408=2004
HAPPY+NEW=2004+YEARとして考える。
H=1 P=6 は確定
H=1になるにはY=8|9である。
Y=8とすると A664+NEW=EAR でなければならず A=0である。
つまり 664+NEW=E0R である。
Nは2以上だからE=9しかない。
代入すると 664+29W=90R
つまり 54+W=R でなければならず成立しない。
よって Y=9 である。
つまり A000+NEW=335+EAR である。
1は使えないのでこの式からA=0が確定する。
代入すると NEW=335+E0R である。
この式よりEは3、4である。
3の場合はN=6なので成立しない。
よって E=4、N=7である。
つまり 5+W=Rである。
7と9は使用済みなので W=3、R=8である。
【問題2】
PC探索によった。基本的に異なるのは下記である。
3×672−12 :括弧、冪乗不要
12×(23×7+6) :冪乗不要
123+276 :括弧不要
6×(73−(1+2)2) :2桁数不要
6×(71+2−32) :同上
12×(63−72)
3×(262−7−1)
(6×7+3)2−21
3×(272−61)
◆北海道 おっ さんからの解答
【問題1】
HとPはすぐ埋まると思う,という文面及びPに6以外の数字を入れると「Pは6です」と言われることから,
H=1,P=6として考える.
もっとも,Hが1以外の場合,この覆面算は成立しないだろうが.
HとPが決まったので,AとYを考える.
下の桁の繰り上がりを考える(繰り下がりは,16+N−E=0を満たせず,不適)と,
10+A−Y(+繰り上がり)=2となり,Y−Aは8〜9の範囲になる.
ここで既に1が使われているので,AとYの組み合わせは(0,8),(0,9)が考えられ,Aは0になる. 1066Y
+ NEW
− YE0R
−−−−−−
2004
Y=8の場合,繰り上がりがないため,6+N−E=0.
これを満たすのは繰り上がりがある場合は(N,E)=(2,9),
繰り上がりがない場合は(3,9).
ここからE=9となるが,6+9−0(+繰り上がりあるいは繰り下がり)は14〜16となり,不適.
Y=9を考えると,6+N−E+1(繰り上がり)=10
(10の位の6+E−0は0にはなりえず,そのため繰り上がりが発生する).
よって,N−E=3.
また,6+E(+繰り上がり)−0=10より(Y=9のため,1の位の繰り下がりは起きない),E=3〜4.
これより,これを満たすのが(7,4).
この場合,9+W−R=4.
使用できる数字が2,3,5,8の中でこれを満たすWとRは(3,8)となり,条件を満たす.
答)
10669
+ 743
− 9408
−−−−−−
2004
なお,P=6という前提条件を外すと,
10228+479−8703=2004
10559+847−9402=2004
10779+428−9203=2004
という解もある.
【問題2】
2×2×3×167が例として挙がっているので,1と2を組み合わせて12とすることも可能であるとして,
考えられうるすべての例について(取りこぼしがある可能性あり),Excel2000+VBAにて計算した.
発見できたのは以下の通り.
なお,例題及び例題を含む交換法則で等価になる式については掲載していない.
12×(23×7+6)=2004
123+276=2004
12×(63−72)=2004
3×(262−1−7)=2004
3×(272−61)=2004
3×672−12=2004
(6×7+3)2−21=2004
6×(71+2−32)=2004
6×(73−(1+2)2)=2004
◆愛知県 とくしん さんからの解答
【問題2】
C++でプログラムを書いて求めました。
バグが無ければこれで全部だと思います。
上が逆ポーランド記法での出力形式で、下が数式に直した物です。
答えが大量に出てくるとチェックが大変で計算も遅くなるので和、差の交換と積、商の交換を排除するように工夫してみました。
プログラムは普通に逆ポーランドの数式を作って答えが2004になるかどうか調べるだけの単純なものです。
が、そのままだといつまでたっても終わらないので途中で交換の排除をする事によって高速化しました。
適当に書き殴った汚いソースコードでコメントも書いてありませんが、折角なので公開します。
根性のある人は解読してみてください(ぉ12 6 3 ^ 7 2 ^ - *
12 6 7 23 * + *
2 2 * 3 * 167 *
276 12 3 ^ +
3 2 2 + * 167 *
3 2 2 ^ * 167 *
3 26 2 ^ 1 - 7 - *
3 27 2 ^ 61 - *
3 6 7 * + 2 ^ 21 -
3 672 * 12 -
6 7 1 2 + ^ 3 2 ^ - *
6 7 3 ^ 1 2 + 2 ^ - *
12*(63-72)
12*(6+7*23)
2*2*3*167
276+123
3*(2+2)*167
3*22*167
3*(262-1-7)
3*(272-61)
(3+6*7)2-21
3*672-12
6*(71+2-32)
6*(73-(1+2)2)
◆ 問題へもどる
◆ 今週の問題へ