見出し画像

【京都大学2020年度前期入試数学(理系)第4問】ごり押し整数問題

今回の問題は整数問題です。時間はかかりますが、難しくはありません。焦らず、でも急いで解きましょう。

画像1

京都大学 百周年時計台記念館
2015年5月5日、Soraie8288撮影、Wikipediaより

[問題] 正の整数 a に対して,
    a = 3^b × c (b, c は整数で c は 3 で割り切れない)
の形に書いたとき,B(a) = b と定める.例えば,B(3^2・5) = 2 である.
m, n は整数で,次の条件を満たすとする.
(i) 1 ≦ m ≦ 30.
(ii) 1 ≦ n ≦ 30.
(iii) n は 3 で割り切れない.
このような (m, n) について
    f(m, n) = m^3 + n^2 + n + 3
とするとき,
    A(m, n) = B(f(m, n))
の最大値を求めよ.また,A(m, n) の最大値を与えるような (m, n) をすべて求めよ.

この問題は面倒で時間がかかりますが、考え方そのものは簡単です。ひたすら3で割ったときの余りで場合分けをして考えるだけです。

mod を使って処理できるかもしれませんが、ベタに式でおいて展開した方が見通しが良いような気がします。あくまで主観ですが。

n = 3k + 1 のとき(k は 0 ≦ k ≦ 9 の整数):f(m, n) に代入すると

f(m, n) = m^3 + (9k^2 + 6k + 1) + (3k + 1) + 3 = m^3 + 9k(k + 1) + 5

が得られますが、f(m, n) が3の倍数になるのは m mod 3 = 1 のときのみで、それ以外の m に対しては A(m, n) = 0 になります。

ここで、m = 3l + 1 とおくと(l は 0 ≦ l ≦ 9 の整数)、f(m, n) = 27l^3 + 27l^2 + 9l + 1 + 9k(k + 1) + 5 = 9(3l^3 + 3l^2 + l + k^2 + k) + 6 となるので、A(m, n) = 1 が得られます。

n = 3k + 2 のとき(k は 0 ≦ k ≦ 9 の整数):f(m, n) に代入すると

f(m, n) = m^3 + (9k^2 + 12k + 4) + (3k + 2) + 3 = m^3 + 9k^2 + 15k + 9

が得られ、f(m, n) が3の倍数になるのは m が3の倍数のときのみで、それ以外の m に対しては A(m, n) = 0 となります。

そこで、m = 3l とおくと(l は 0 ≦ l ≦ 10 を満たす整数)、

f(m, n) = 9(3l^3 + k^2 + 1) + 15k

となり、f(m, n) が 9の倍数となるのは k が3の倍数のときのみで、それ以外の k に対しては A(m, n) = 1 となります。

そこで、k = 3K とおくと(K は 0 ≦ K ≦ 3)、

f(m, n) = 9(3l^3 + 9K^2 + 5K + 1)

となり、f(m, n) が 27 の倍数となるのは K = 1 すなわち、k = 3 かつ n = 11 のときのみで、このとき

f(m, n) = 9(3l^3 + 9 + 5 + 1) = 27(l^3 + 5)

となり、それ以外の K に対しては A(m, n) = 2 となります。

ここで、l = 3L + 1 (ただし、L = 0, 1, 2, 3) のときは

f(m, n) = 27(27L^3 + 27L^2 + 9L + 6) = 81(9L^3 + 9L^2 + 3L + 2)

となり、A(m, n) = 4 となりますが、それ以外の l に対しては A(m, n) = 3 となります。

以上のことから、A(m, n) の最大値は 4 で、(m, n) = (3, 11), (12, 11), (21, 11), (30, 11) のときに A(m, n) = 4 となります。

見ての通り、泥臭く場合分けをしていけば答えが得られます。きれいな方法ではないですが、多少の違いはあれども同じようなことになると思います。

問題はどこまで理論で攻めて、どこからしらみつぶしをするか、の判断です。

さすがに、31 × 31 = 961 通りの (m, n) について f(m, n) を計算することはないでしょうけど、n = 11 が求まった後の m = 3l の11通りであればしらみつぶしするのはありだと思います。

この問題はいかにきれいに解くかではなく、いかに時間をかけずに解くかが勝負で、そのために力業もありという問題だと思います。

この記事が気に入ったらサポートをしてみませんか?