スポンサーリンク

(数セミ)”エレガントな解答をもとむ”に1時間で挑戦!読者の皆様への挑戦もあります!【1時間チャンジシリーズ】挑戦⑥

1時間チャレンジ

本記事の内容

本記事は『数学セミナー』(日本評論社)に掲載されている”エレガントな解答をもとむ”に出題されいている問題に、1時間で解けるか、という挑戦をする記事です。

本記事を読むにあたり、前提知識は基本的に必要ありませんが、以前紹介した記事の内容を使う場合はその旨を記述することにします。

今回は「エレガントな解答をもとむ selections」に掲載されいている問題です。

問題①

今回は、計算方法についての問題です。

哲平君は、小学生のとき引き算が大の苦手でした。そこで彼のあみだした手は、55205520ならば
55+80=13555+80=135
とします。2桁の引き算なので百の位を無視して、答えは3535としました。また351250351250ならば
351+750=1101.351+750=1101.
これは、3桁の引き算なので千の位はあるはずがなく、答えは101101としました。彼は2020に対する8080250250に対する750750を「連れ」と呼び大切にして、小学生の間はこの算法で快進撃をしました。ところが中学生になって20552055250351250351という負の符号の現れる計算に直面しました。そこで哲平君は「連れ」に似たような「道連れ」があるのではないかと思い、次のことを考え始めました。

(1)小学生のときあみだした「連れ」の定義と引き算の原理を解明すること。
(2)これを発展させて中学生の引き算でも類似の原理をみつけ、「道連れ」なるものをうまく定義できるのであろうか。

という2つの問題です。

数学セミナー編集部編(2001)『エレガントな解答をもとむ selections』日本評論社 p11-p12.

いざ、チャレンジ

チャレンジの結果、解けたか解けないかでいうと解けませんでした。
言い訳をすると、ニアミスにより間違えました。
なんとも情けないミスだったので少々凹んでいます。

筆者の解答

まずは、哲平くんが考えた計算方法を確かめるためにいくつか実験してみました。

例えば、555555であれば、
55+95=15055+95=150
150150の百の位を無視して答えは5050です。
またこのときの55に対する「連れ」は9595です。

同様にして25162516
251+994=1245251+994=1245
で、12451245の千の位を無視して答えは245245です。
またこのときの66に対する「連れ」は994994です。

この実験から桁数が関係しているんだな、と分かりました。
そこで、一般にnn桁とmm桁の引き算について「連れ」を考えてみることにしました。

※以下、ニアミスをそのまま書きます。

(1)の解答

n,mNnmとして、A,BN
A=10nan+10n1an1++10a1+a0B=10mbm+10m1bm1++10b1+b0
と書いたとします。
ただし、A>Bとします。
このとき、
AB=10nan++10m+1am+1+10m(ambm)++10(a1b1)+(a0b0)
となります。

このとき、B+x=10n+1を満たすようなxが「連れ」ということになります。
従って、10n+1BBに対する「連れ」です。

故に、

「連れ」
nNANn桁とする。このとき、BNA>Bを満たすならば、10n+1BBに対する連れという。

と定めれば良い、ということが分かります。

しかし、本来は「本当にこれで良いのか?」ということを議論する必要がありますが、そこまではできませんでした。

次に、「引き算の原理」ですが、何を持って原理なのか少々不安でしたが、ここでは、哲平くんの計算方法がなぜ正しい引き算の答えを導けるのか、ということを原理と捉えて話をします。

これは単純で、A>Bのとき、
AB=A+(10n+1B)10n+1
だからです。
最後に10n+1を引くのは一番上の位の数を無視する、ということに対応しています。

※「”連れ”を求める時点で引き算ができてるんじゃないかな?哲平くん?」とは思いましたけれども(笑)

(2)の解答

これはもう「”連れ”と同じじゃん。ABを入れ替えて同じことをすればいいじゃん」と思いました。

要するに、A<BのときはBAを(1)の手法で(つまり、”連れ”を使って)計算して、導いた値にマイナスをつければ良い、と思いました。

従って、

「道連れ」 ANn桁で、\(A道連れと呼ぶ。

と定めればよいだろう、となりました。

実際に、これで良いのか、というとA<Bのとき、
AB=(10n+1A)B+10n+1=(10n+1A+B10n+1)
となるので、良いです。

解答

筆者の回答を読んで頂いた方は、もうお分かりかと思いますが、10n+1ではなく、10nでした。
10の時点で既に2桁だからです。

では、解答を述べます。

(前略)

まず、「連れ」についての定義は、世の中一般に知られている補数のことです。つまりr進法のn桁の数Nに対して、この補数Ncは、
Nc=rnN
と定義する、ということです。つまり、ここでは、a>bに対して、もしbの桁がnならば、その「連れ」は、
10nb
であり、この原理は、
ab=a+(10nb)10n
となり、右辺の最後の10nが最高桁の1を取るということになります。
次に「道連れ」についても同様のことが定義出来るのですが、a<bにおいて、aの「連れ」を「道連れ」として定義して、まず、ba=b+(10na)10nを考えて、次に
ab={b+(10na)10n}
とします。右辺の左端の負符号が、無条件につけるマイナスの意味となります。

(中略)

しかし、ここで疑問が生じてくるのです。ここが「エレガントな解」の真髄なのですが、哲平君は、引き算が大きらいなのに、例えば、1000232のような複雑(少なくとも哲平君にとっては)な引き算をいとも簡単にやってしむことが出来るはずがない、と断定するべきです。(少なくとも、私はそうした。) しかし、引き算が苦手な哲平君でも1桁の引き算くらいはできるだろうと考えてあげてもよいのではなかろうか、つまり、「連れ」を定義したとき、
x=10nb=(10n1)b
とするとどうでしょうか? 先ほどの例では
999232=767
これに1を加えれば768と一気に答が出て来るのです。この計算を見れば、各桁の借りは一切ないことに気づくでしょう。じつはこれが、擬補数と呼ばれる数の定義担っています。つまり、先程定義した補数は真補数と呼ばれ、擬補数の定義は、次のようになります。
r進法n桁の数Nに対して、この擬補数Np
Np=(rn1)N
として表せる、ということです。
そして、もしN=a1a2anで、Np=b1b2bnとすると、角1inに対して、各桁bi
bi=(r1ai)
となります。

(中略)

この考えを2進法に適用すると、例えば、
N=10101Np=01010
Nc=01011と単に01を逆転させて、1を加えるだけで真補数が求まります。そこで10進法の原理にもどって考えてみると、2進法の引き算も同様にたし算として扱え、その上10進法よりもはるかに機械的に取り扱えることがわかるのです。つまりこの哲平君は、鉄の塊のような箱、コンピュータだったというのが正解なのでしょうか?

数学セミナー編集部編(2001)『エレガントな解答をもとむ selections』日本評論社 p75-p76.

筆者が思った通り、「哲平君、結局引き算してるじゃん」というのは出題者も感じていたようです。
出題者は1桁の引き算は出来る、ということにして擬補数を導入した、ということのようです。
とはいえ、結局引き算してるじゃないか、ということには変わりないわけですが。

今回の問題でコンピュータで引き算がどのようにして行われているかが分かって面白かったです。

読者の皆様への挑戦状!

今回から、実際に筆者が解くのは1問として、1問は読者の皆様に挑戦状という形で出題したいと思います。
今から紹介する問題の解答は来週解説します!

太郎君がこう言いました。「太陽から地球に光が届くには8分ほどかかる。地平線に太陽が沈んだと見えるときには実際の太陽の位置は8分ほど進んだ地平線の下の方にあるんだ。」
次郎君は「へー、なるほど」と言ってちょっと考えていましたが、「本当にそうなのかなあ」と少し疑問があるようです。
太郎君が正しいのか次郎くんが正しいのか、読者の明快でエレガントな説明を求めます。

数学セミナー編集部編(2001)『エレガントな解答をもとむ selections』日本評論社 p12.

いかがでしたか?
今回は数セミの「エレガントな解答をもとむ」に挑戦してみる、という記事でした。
魔法陣は初めて解きましたが、結局力技が入ってくるのでしょうか…?
時計の問題は結局筆者の読解力不足でした。

読者の皆様も是非一度挑戦してみて下さい!
そして、「読者の皆様への挑戦状」にも是非挑戦していただき、解答をコメントで教えて下さい!

質問、コメントなどお待ちしております!
どんな些細なことでも構いませんし、この記事に限らず、「定理〇〇の△△が分からない!」などいただければ全てお答えします!
お問い合わせの内容にもよりますが、ご質問はおおよそ3日以内にお答えします。
もし直ちに回答が欲しければその旨もコメントでお知らせください。直ちに対応いたします。

Twitterでもリプ、DM問わず質問、コメントを大募集しております!

コメントをする

タイトルとURLをコピーしました