また rscの日記さんのところからです。もとの問題はこちら。
ある塾のA組からC組までの3つの組には、合計105人の生徒が在籍しており、それぞれの組の生徒数に関して、次のア、イのことがわかっている。
ア B組の生徒数の3倍は、A組の生徒数の2倍より5人以上多い
イ C組の生徒数は、A組からC組までの生徒数の合計の5割より7人以上少なく、B組の生徒数より20人以上多い。
このときB組の生徒数として正しいのはどれか。
Ruby で解いてみようかと式をいじくったら、そのまま解けてしまいました。まず式にすると、
ですが、ここから a を消去して
となります。これより c の範囲が
となるので、c = 45 とわかります。これより
すなわち b = 25 で、これが回答です。(これらより a = 35 とわかります。)
Ruby でやるならこんな感じでしょうか。b + 20 ≦ c より明らかに b < c であることを使っています。
for b in 1..104 for c in (b + 1)..105 a = 105 - b - c next if a < 1 if (3 * b >= 2 * a + 5) and (b + 20 <= c and c <= 52.5 - 7) puts "(a, b, c) = (#{a}, #{b}, #{c})" #=>(a, b, c) = (35, 25, 45) end end end