大数2015年1月号学コン第2問を解いたよ
🧦
時々、図書館に行くことがあるんですが、昔数学をやっていたこともあって、「大学への数学」をぱらぱらとみることがあるんですよね。で、学力コンテストの問題を見て、おもしろそうな問題をちょっと解いてみようかなと思っては挫折する、みたいなことをよくしています。
今日は、おもしろそうな問題で、しかも解けた(笑)問題があったので、僕の解答とともに紹介したいと思います。紹介するのは、大学への数学2015年1月号の学力コンテスト第2問です。学力コンテストは採点付の問題ですが、締め切りが1月10日だったので、もう解答を書いてしまってもいいかな、と思うので書いていきます。
なお、普段このブログは888文字で書いていますが、今日は8888文字のロングバージョンです。
問題
では、さっそくですが、問題を書いていきます。一言一句同じではないのですが、だいたいこんな感じの内容でした。
(1) a^2 + b^2 + c^2 = 2015 となる自然数a, b, cが存在しないことを示せ。
(2) a^2 + b^2 + c^2 + d^2 = 2015 となる自然数a, b, c, dを2組求めよ。
ただし、(p^2 + q^2)(r^2 + s^2) = (pr - qs)^2 + (ps + qr)^2 と 2015 = 5×(2+401)であることは用いてもよい。(3) a^2 + b^2 + c^2 + d^2 = 20152015 となる自然数a, b, c, dを2組求めよ。
こういう問題です。(2)がなかなかごつい感じがします。(3)の右辺もなかなかすごい数字です。今年は2015年なので、2015にちなんだ問題ということですね。
ここで、書き方の問題なのですが、a^2はaの2乗という意味です。ただ、少し見にくいので、以下では「a・a」や「aa」と書くこともあります。注意してください。
(1)を解く
まずは、(1)から解いていきましょう。
(1) a・a + b・b + c・c = 2015 となる自然数a, b, cが存在しないことを示せ。
45×45=2025なので、もし上のような自然数が存在するとしたら、すべて44以下のはずです。が、そのすべてを書き出すのはナンセンスです。少し工夫して、例えば、aが一番大きいと仮定して、44の場合にbとcの組み合わせがあるか、43の場合はどうか、とaの数字を下げていくというやり方もあるでしょう。しかし、それでも挫折するほどパターンがたくさんあります。
なので、もっといい方法を考えましょう。
もし、上のような組み合わせがあるとしたらどうでしょう。きっと矛盾が発生するはずです。その矛盾を証明できればゴールですよね。
僕はこの問題を見たときに、別の問題を思い出したんですよね。話はそれますが、(1)を解く前にその問題を紹介しましょう。
自然数a, b, cが「a・a + b・b = c・c」を満たす場合、a, b, cのどれかが3の倍数であることを示せ。
「」内の式は、三平方の定理で出てくる式ですね。もとの問題と形は違いますが、実はこの問題の解き方を応用することができます。この問題は、次のように解くことができます。
3の倍数ではない自然数は、3x±1とかける(xは整数)。
これを2乗すると、3(3x・x ± 2x)+1となる。よって、3x±1を2乗して3で割ると、余りは1になる。aもbもcも3の倍数ではないとすると、a・a + b・bを3で割った余りは2で、c・cを3で割った余りは1となり、両辺の余りは一致しなくなってしまう。
よって、a, b, cのどれかは3の倍数である。(証明終)
ここでのポイントは、考えられる数字の組み合わせは無限個あるんだけれど、「余り」に注目することによって、考えられる数字のパターンをすごく減らすことができる、ということなんですよね。3で割った余りを考えることで、考えるべきパターンは高々3種類の数字の組み合わせになったというわけです。この考え方が、今から解こうとしている問題に応用できます。
例えばですね、「a・a + b・b + c・c = 2015」の式が成り立つとして、「a、b、cのすべてが偶数」はありえないですよね。2乗して足した答えが奇数になる、ということは、どれかが奇数です。でも、これだけだと矛盾が発生しません。では、3で割った余りに着目してみるとどうでしょう。
自然数は、整数xを使って、3x、3x+1、3x-1のどれかの形で書くことができます。これらを2乗して3で割った余りは、それぞれ、0、1、1になります。後半2つは、上で書いた別問題の解答からわかりますね。さて、2015を3で割った余りは2です。すると、a、b、cの組み合わせを、3の倍数が1個、3の倍数でないものが2個にすると…。おっと、できちゃいますね。これでは矛盾が発生しません。残念ながら、3で割った余りに着目する方法はうまくいかないことがわかります。
うーん、この方法はダメかもしれません。が、一応4で割った余りも考えてみましょう。上と同じように考えると、自然数は、整数xを使って、4x、4x+1、4x+2、4x+3のどれかの形で書くことができます。それぞれ2乗してみると、4で割った余りは、0、1、0、1となります。一方、2015を4で割った余りは3。ということは、aもbもcも4で割った余りが1か3なら、両辺を4で割った余りが一致してしまいます。またもや矛盾が生じません。
うぅむ、もはやこれまでか。と思いきや、実はいいことがわかります。
というのも、4x+y(yは0,1,2,3のどれか)を2乗すると
4(4xx + 2xy) + yy
となるのですが、かっこの中はさらに2でくくれるので、
8(2xx + xy) + yy
と書くことができます。つまり、2乗した後は、8で割った余りに着目できるということです。2乗したものを8で割った余りは、yが0、1、2、3の時、それぞれ0、1、4、1であることがわかります。一方、2015を8で割った余りは7。0と1と4をどう組み合わせても、7を作り出せないので、矛盾することがわかります。これにもとづいて解答を書くと、次のようになります。
(1) a・a + b・b + c・c = 2015 となる自然数a, b, cが存在しないことを示せ。
【解答】
任意の自然数は、4x+yとかける(xは整数、yは0, 1, 2, 3)。
これを2乗すると、8(2xx + xy)+yyとなる。よって、2乗したものを8で割った余りは、yが0の時は0、yが1の時は1、yが2の時は4、yが3の時は1となる。一方、2015を8で割った余りは7であるから、両辺を8で割った余りが一致することはない。
よって、a・a + b・b + c・c = 2015 となる自然数a, b, cは存在しない。(証明終)
a、b、cを44個ずつチェックしなくてよかったですね。余りに着目することで、考えるものはパターンはすごく減りました。0と1と4を重複OKで3回使って7を作ることは無理だとすぐにわかるので、証明することができましたね。4で割った余りで自然数を分け、2乗した後に、「8で割った」余りに着目する、というのが少し難しかったかもしれません。
整数問題で余りに着目して解くことはよくあるので、覚えておきましょう。
(2)を解く
さて、続いて(2)です。もう一度問題を書いておきましょう。
(2) aa + bb + cc + dd = 2015 となる自然数a, b, c, dを2組求めよ。
ただし、(pp+qq)(rr+ss) = (pr-qs)^2 + (ps-qr)^2 と 2015 = 5×(2+401)であることは用いてもよい。
まずは、使ってよいと言われている1つ目の式を見てみます。これは単に展開すれば成り立つことがすぐにわかる式です。この式の証明自体は、難しくはありません。難しいのは、「この式をどうやって使うか」です。問題文にこう書いてあるということは、この式を使わないと解けないですよ、ということですから、この式をどう使うかを考えましょう。ズルい考え方ですけども、入試数学を解く上では必要な考え方です。
この式をよくよく見てみると、左辺は「○×○」と掛け算の形をしています。右辺は「○^2+○^2」と2乗したものの和になっています。求めたい自然数に設定されている条件は、2乗したものの和に関連しています。その「2乗したものの和」がヒントの右辺に出ているということですよね。このあたりがあやしいです。
一般的な話ですが、数字をパッと見たときに、a×bの形にするのと、a^2+b^2の形にするのとでは、どちらが簡単でしょうか。普通は、a×bの方だと思うんですよね。実際、使っていいよと言われている2つ目の式は、2015を掛け算の形にしています。最終形は2乗の和の形にしたい。そして、掛け算を2乗の和に変換する式がある。これですべてがつながります。
つまり、解答はこのような流れになります。まず、2つ目の式を使って、2015を掛け算の形にする。次に1つ目の式を使って、掛け算を2乗の和にする。そうして題意を満たす自然数を求める、ということです。a~dを44パターンずつ試さなくてもいいんですね、すばらしい。
では、解答です。
(2) aa + bb + cc + dd = 2015 となる自然数a, b, c, dを2組求めよ。
ただし、(pp+qq)(rr+ss) = (pr-qs)^2 + (ps+qr)^2 と 2015 = 5×(2+401)であることは用いてもよい。【解答】
まずは、(pp+qq)(rr+ss)=(pr-qs)^2+(ps+qr)^2 (この等式を①とする)を示す。(pp+qq)(rr+ss)
=pprr+ppss+qqrr+qqss(pr-qs)^2+(ps+qr)^2
=pprr-2pqrs+qqss + ppss+2pqrs+qqrr
=pprr+ppss+qqrr+qqss展開した値が一致するので、①が成立する。
2015
= 5×(2+401)
= (1・1 + 2・2)×(1・1 + 1・1 + 1・1 + 20・20)
= (1・1 + 2・2)×(1・1 + 1・1)
+ (1・1 + 2・2)×(1・1 + 20・20)
= (1・1 - 2・1)^2 + (1・1 + 2・1)^2
+ (1・1 - 2・20)^2 + (1・20 + 2・1)^2(①より)
= 1^2 + 3^2 + 39^2 + 22^2また、
2015
= 5×(2+401)
= (1・1 + 2・2)×(1・1 + 1・1 + 20・20 + 1・1)
= (1・1 + 2・2)×(1・1 + 1・1)
+ (1・1 + 2・2)×(20・20 + 1・1)
= (1・1 - 2・1)^2 + (1・1 + 2・1)^2
+ (1・20 - 2・1)^2 + (1・1 + 2・20)^2(①より)
= 1^2 + 3^2 + 18^2 + 41^2よって、(1,3,22,39)と(1,3,18,41)は、題意を満たす。(終)
ここでのポイントは、やはり、掛け算を2乗の和に変換する1つ目の式です。「①より」と書いているところは2か所ありますが、それぞれ①を2回ずつ使っています。これがかなりきいているので、上のような2乗の和の形に持っていけるんですよね。①を使うためには、5=1+4とか401=1+400に分解して2乗の和を作り出す必要はありますが、まぁこれくらいはすぐに気付けるでしょう。
「2組求めよ」という問題でしたが、5×401の部分に対して、1つ目の式を適用する方法が2パターンあったから、2組求められているんですよね。これもすぐに気付くと思います。
結構クリティカルなヒントが出ているので、あとはどうやってその式を応用するか、っていうのが解けるか解けないかにつながってくると思います。まぁ、ヒントをよく見れば、自然と答えは決まってくるような気がしますが。
ちなみに、「aa + bb + cc + dd」の方から変形していくのはおそらく無理でしょう。この方法だと、1つ目の式を右辺から左辺に変形しなければいけませんが、p、q、r、sの条件式が複雑になり過ぎてしまいます。この方法をとってしまうと、迷える子羊になってしまうでしょう。ひつじどしだけに。いや、なんでもないです。
(3)を解く
さて、最後の(3)です。これはまたやっかいな感じがします。もう一度問題を見ておきましょう。
(3) a^2 + b^2 + c^2 + d^2 = 20152015 となる自然数a, b, c, dを2組求めよ。
20152015とはなんなんでしょう。こんな数字見たことないです。が、これも次のように書けることはすぐにわかります。(2)で2015を掛け算に分解していましたが、それと似たようなことをやればなんとかなりそう、という見通しを立てています。
20152015
= 10001 × 2015
= (1・1 + 100・100) × 2015
(2)の1つ目の式は、2乗の和の積を2乗の和に置き換えるという内容でした。(2)を解いた時には、このヒントを「5×(2+401)」(つまり、2015のことです)に適用したんですよね。5を2乗の和に、2と401もそれぞれ2乗の和にして、変形していきました。
このことを思い出して、もう一度上の式を見てみます。10001は2乗の和になっています。その次の2015はどうでしょうか。(2)の2つ目の式にあった、2と401に該当するものはどこにあるでしょう。実は、ここで(2)の答えがそのまま使えるんです。
(2)で使った解法も解答も両方使いまわすというのが、なかなかおもしろいです。それでは、解答を書いていきましょう。
(3) a^2 + b^2 + c^2 + d^2 = 20152015 となる自然数a, b, c, dを2組求めよ。
【解答】
20152015
= 10001 × 2015
= (1^2 + 100^2)
× (1^2 + 3^2 + 22^2 + 39^2)((2)の解答より)
= (1^2 + 100^2) × (1^2 + 3^2)
+ (1^2 + 100^2) × (22^2 + 39^2)
= (1×1 - 100×3)^2 + (1×3 + 100×1)^2
+ (1×22 - 100×39)^2 + (1×39 + 100×22)^2((2)①より)
= 299^2 + 103^2 + 3878^2 + 2239^2また、
20152015
= (1^2 + 100^2)
× (3^2 + 1^2 + 22^2 + 39^2)((2)の解答より)
= (1^2 + 100^2) × (3^2 + 1^2)
+ (1^2 + 100^2) × (22^2 + 39^2)
= (1×3 - 100×1)^2 + (1×1 + 100×3)^2
+ (1×22 - 100×39)^2 + (1×39 + 100×22)^2((2)①より)
= 97^2 + 301^2 + 3878^2 + 2239^2よって、(103,299,2239,3878)と(97,301,2239,3878)は、題意を満たす。(終)
(2)で練習して、(3)を解くという誘導がおもしろいですね。同様の解き方をすれば、2015201520152015も4つの2乗の和で書けることはすぐにわかりますね。やりませんが。
さて、(2)でヒントになっている1つ目の式は、「2乗の和の積を2乗の和に変換する」という内容でした。これだけ見ても、どんなうれしいことがあるのかよくわかりません。しかし、この問題で使ったように、「2乗の和に分解したい」という時には、使えるんですね。
「2乗の和の積」と「2乗の和」。ともに2乗が出てきていますが、前者の方が、考える値が小さくなりますよね。例えば、(2)の解答の途中で、2005を2乗の和で書くかわりに、5×401として、5を2乗の和で、401を2乗の和で書くという問題にすり替えています。2005を分解するより、5と401をそれぞれ分解する方が簡単です。このように、「2乗の和の積」で考えた方が問題が簡単になるんですね。2005を見て「あぁ、18の2乗と41の2乗の和だな」などと気付いちゃう人の存在は想定していません!
こういう使い方するんだなぁ。なるほどなぁ。
余談1
さて、ここから先は余談です。
この問題では、(2)も(3)も2組ずつ答えるという形になっていました(個人的にはなぜ(3)で2組求めさせるのかしっくりきていませんが)。しかし、もちろん、答えはこの2組だけではありません。他にどれくらい組み合わせがあるのでしょう。
とりあえず解答はもう終わったので、ズルい方法で確かめてみます。Javaで、処理速度のことは考えずに、次のようなプログラムを書いてみます。
int a, b, c, d, target;
double max;
target = 2015;
max = Math.sqrt( target );
for ( a = 1; a < max; a++ ) {
for ( b = a; b < max; b++ ) {
for ( c = b; c < max; c++ ) {
for ( d = c; d < max; d++ ) {
if ( a * a + b * b + c * c + d * d == target ) {
System.out.println( a + "," + b + "," + c + "," + d );
}
}
}
}
}
実行すると、意外にたくさん結果が出てきます。全部で61組でてきました。もちろん、上で解答したものも含まれています。上のプログラムを実行すると、(2)で解答したものが一番上に表示されます。
上のプログラムは2015を調べていますが、20152015の場合は、targetのところを変えてやると同様に調べることができます。が、結果が多すぎて途中であきらめました。感覚的にはもっと少ない印象ですが。意外。
余談2
さらに余談ですが、次の式について考えてみます。(2)で出てきた1つ目の式ですね。
(p^2 + q^2)(r^2 + s^2) = (pr - qs)^2 + (ps + qr)^2
この式は、複素数との関連があります。複素数は、今の高校生が勉強しているのかどうか調べてないけど。
まず、次の式は、ただ展開すればわかりますよね。
(p + qi)(r + si) = (pr - qs) + (ps + qr)i
ここで、両辺の絶対値を考えると、上の式が導かれます。こんな式を、整数問題で使うことができるんですね。意外。
余談3
さらにさらに余談ですが、2乗の和に分解するのって、なんか名前とかついてないんでしょうか。
例えば、2つの2乗の和、っていうのは、三平方の定理で出てきますよね。3つの場合と4つの場合はこの問題で出てきました。きっと、もっと一般化した問題を誰かが考えていそうな気がします。
そこで、調べてみたら、こんなページがあったんですよね:三個の平方数の和。いやほんとウィキペディアはなんでもあるなぁ。「1+2+3+4+…=-1/12」をわかったつもりになるという記事を書いたときに、1+2+3+4+…っていうページを見つけたときも驚いたけど。
この「三個の平方数の和」というページによると、自然数が4^n(8k+7)の形で書けることと、その自然数が3個の平方数の和では書けないことが同値らしい。同じことだけど、4^n(8k+a)(aは1から6のどれか)の形で書けることと3個の平方数の和で書けることが同値らしい。
確かに、(1)の証明の中で、8で割った余りに着目したけど、「4^n(8k+7)」につながってたんですね。(1)の証明では、8で割った余りが7だったのでダメ、っていうことを示したけど、あれって実はかなりクリティカルなことを言ってたんだなぁ。
しかも、もっとおもしろいことも書いてあります。さきほどのウィキペディアのページのさらに下の方に「四個の平方数の和」っていう項目があって、「すべての自然数は、高々4個の平方数の和で書ける」とかいてあります。なんと。すごすぎる。ちなみに、四平方定理というページに、証明が載っています。
ちゃんとは追ってないけれど、まずは素数が「高々4個の平方数の和」で書けることを示し、その後で「(高々4個の平方数の和)×(高々4個の平方数の和)」は「高々4個の平方数の和」で書けるということを示し、「だから任意の自然数は、高々4個の平方数の和で書ける」という流れです。
個数は違いますが、上の問題でも「(2個の平方数の和)×(2個の平方数の和)」は「2個の平方数の和」ということを使っているんですよね。ウィキペディアでは4個バージョンの「オイラーの四平方恒等式」というのを使ってます。
やはり先人たちがやってるんですねぇ。全然、意外じゃない。
最後に
整数問題はどこから手を付けていいかわからないことが多いけど、今回紹介した問題は誘導がわかりやすかったです。まぁ、自分が解けたから「わかりやすかった」とか言えるわけですけど。特に公式も使わないのでブランクがあっても解ける可能性があるので、また機会があれば挑戦してみたいですね。気が向いたら、入試の過去問などをあさってみるかもしれません。