ツイッターで、数学夏祭り、というのを見かけたので、解いてみました。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日
#

低糖質パン通販サイト「ボーノドーノ」の商品を試食しました。 詳細はこちら

今回は、ユーザー数の多いWordPressをベースに、WooCommerce... 詳細はこちら

#

concrete5で、特定のURLを外部ページへリダイレクトしたい場... 詳細はこちら