「5と8の和で表すことができない最大の整数を求めよ」解いてみた

バイト中暇なので解いてみた。

問題

0以上の整数 m, n を用いて
5m +8n = K
とするとき、K の取り得ない最大値を求めよ

解法1

一般に、整数a,bをもちいて作れる整数は
 an + bm = k*gcd(a,b)
である。ベズーの等式
 a = 5, b = 8 a⊥b よりgcd(a,b) == 1 であるため n, m に正負の制限をかけなければすべての整数が作れることがわかる。
これを利用するのが普通の解法だ。

解法2

では、ベズーの公式を知らない場合はどうするのか。解き方を考えてみた。
そもそも、Kがある値L以上ならすべての値をとり得るのか?
もしそうなら(問題としてそうなるはずだが)ある値Lが求まればL未満の数について考えれば良いので問題は簡単になるはずだ。

考察

十分に大きなm', n' を考える。このときK = K'とすると、K'+1 を作ることができれば帰納的にK'以降のすべての値はとり得る。
しかしこれは嘘である。 なぜなら+1を作るには m, n のどちらかは負でなければならない。
nが負の場合、K=1となるm,nで一番大きなmm = -3, n = 2 なので、m = m' -3, n = n' +2とすれば K=K'+1になる。これを再帰的に続けて行くとmが負になってしまうからだ。

少し発想を変えてみる。
 n', m'に0以上の整数を加えてできるKのうち最小のものはn = n'+1, m=m'K=K'+5だ。
ということはあるm',n'が与えられたときにK'+1, K'+2, K'+3, K'+4 が実際に作れるなら帰納的にK'以上の値はすべてとり得ると言える。

K n m
+1 -3 2
+2 -6 4
+3 -1 1
+4 -4 3

上の表から、n >= 6ならそれ以上のKは作成可能である。 最小値はn=6, m=0のときK=30となり30未満の数について考察していけばいい。 n=5, m=0を考えるとK=25で、上の表から+1,+3,+4は作成可能。よって27が解の候補となる。実際にm=0,1,2,3と代入していくと27は作りえないので答えは27である。