過去ログ

uchinyan
スモークマンさんの解法(#27213)を見ていて、「そうそう、これがあったな。」と思い出した解法。
多分、私が高校生のときだったら、こうやっただろうと思います。
文字式使いまくりなので、算数ではないし、スマートでもないですが、
二元一次の不定方程式を地道に解く、と意味で、かなり一般的で応用の利く解法です。
ポイントは、ユークリッドの互除法的なアルゴリズムだけです。
思い出させてくれたスモークマンさんに感謝 ^^/

(解法6)
使用する文字式の値は、整数だけとします。
今、X で、正の整数の最小、という条件だけを除いたものを x とします。すると、
x + 1 = 2a, x + 2 = 3b, x + 6 = 5c, x + 30 = 11d, x + 330 = 41e
これを整数の範囲で解けばいいです。
a の式から、
x = 2a - 1
これと b の式から、
3b = (2a - 1) + 2 = 2a + 1
2a = 3b - 1
a = b + (b - 1)/2
両辺が整数になるには、
b = 2p + 1
です。そこで、
x = 6p + 1
これと、c の式から、
5c = (6p + 1) + 6 = 6p + 7
c = p + 1 + (p + 2)/5
両辺が整数になるには、
p = 5q - 2
です。そこで、
x = 30q - 11
これと、d の式から、
11d = (30q - 11) + 30 = 30q + 19
d = 2q + 1 + (8q + 8)/11
両辺が整数になるには、
q = 11r - 1
です。そこで、
x = 330r - 41
これと、e の式から、
41e = (330r - 41) + 330 = 330r + 289
e = 8r + 7 + (8r + 8)/41
両辺が整数になるには、
r = 41s - 1
です。そこで、
x = 330 * 41 * s - 330 - 41 = 13530 * s - 371
になります。
X は、x で x > 0 となる最小のものなので、s = 1 として、
X = 13530 * 1 - 371 = 13159
になります。

スモークマンさんへ。
途中でいろいろと工夫されていますが、むしろ最後まで一般解として解いてしまった方が、スッキリ解けるようです。
ネコの住む家   4月14日(金) 11:45:26   MAIL:uchi@sco.bekkoame.ne.jp   27217

過去問題一覧へ戻る