#!/usr/bin/python # 2020 京都大学 入学試験 数学(理系)4 # 正の整数 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) をすべて求めよ. rl = [] M = -1 def B(a): r = 0 while a%3 == 0: r += 1 a = a/3 return r def f(m, n): return m**3+n**2+n+3 def A(m, n): return B(f(m, n)) for n in range(1, 31): if n%3 == 0: continue for m in range(1, 31): a = A(m, n) if a >= M: if a > M: M = a rl = [] rl.append([m, n]) print(M) print(rl)