ツイッターで、数学夏祭り、というのを見かけたので、解いてみました。8/31の問題は↓です。

プログラムを使って解答

問題は整数問題で、大学入試の出題であれば標準的な難易度だと思われます。ただ、全部調べていくのは大変なので、プログラムを書くことにしました。

<?php
// p<=qから、1/p > 1/q なので、2/p>=左辺。またr<79なので、右辺>=1/79。
// なので、2/p >= 1/79 の範囲だけ調べればよく、1 <= p <= 158

// 順に計算していくプログラムを書く
for ($p=1; $p<=158; $p++) {
    for ($r=1; $r<79; $r++) {
        if (($p * $r-79) != 0 && (79 * $p) % ($p * $r-79) == 0) {
            $q = (79 * $p) / ($p * $r-79);
            if ($q >= $p) {
                echo '(' . $p . ', ' . $q . ', ' . $r . ')';
                echo PHP_EOL;
            }
        }
    }
}

/*
// 実行結果 (p, q, r)
(2, 158, 40)
(4, 316, 20)
(5, 395, 16)
(8, 632, 10)
(10, 790, 8)
(16, 1264, 5)
(20, 1580, 4)
(40, 3160, 2)
(79, 79, 2)
(80, 6320, 1)
(158, 158, 1)

// 前から3番め (5, 395, 16)
// 後ろから5番め (20, 1580, 4)
16 x 1580 = 25280

答えは 25280
*/

プログラムの前準備として、変数pの範囲をある程度絞り込みしておきます。上のコードでは不等式で比較していくことで、p<=158を算出しています。CPU性能に頼った力技でも良いですが、私は上のコードのように、ある程度数学を活用するのが好きです。

プログラムは書きなぐったコードなので、それほどキレイではないかもしれませんが、p,q,rの値の組を探すだけなら十分です。

こうやって、p,q,rの値の組を列挙したら、あとは掛け算をすればOKです。

記事公開日: 2020年09月01日
#

弊社が関わっているウェブサービス名古屋セミナーポータルで... 詳細はこちら

#

株式会社コミュニティコムの星野さんが、「FAAVO埼玉(クラウ... 詳細はこちら