11月10日の新聞各紙に、2025年度大学入学共通テスト「情報I」の試作問題が載っていました。パズル的な問題があったし正解表も載っていたので、Pythonプログラムの技術力向上のため取り組んでみました。
この問題で使用する貨幣は、100円、50円、10円、5円そして1円です。500円は使用しないと問題文に明記されています。
この関数は8が与えられると、
5円玉...1枚
1円玉...3枚
だから、1+3=4(枚)を返します。単位の大きい貨幣から除算と剰余算を繰り返せばいいわけですね。
46が与えられたら、
46÷100=0...46
46÷50=0...46
46÷10=4...6
6÷5=1...1
1÷1=1...0
だから、4+1+1=6(枚)が答えです。
これを計算するプログラムを書いてみました。
実行結果はこうなります。(英語が正しいかは置いといて)
上の関数で51円を指定したら2枚が返却されますが、ここではおつりも含めて3枚と計算したいわけですね。4つの選択肢の中で、計算結果が3となるものは
0. 枚数(51)+枚数(5)
しかありません。
枚数(51)+枚数(5) = 2+1 = 3
答えは0。
イの「枚数(51)+枚数(5)」を汎化すればいいです。51は価格xと釣り銭yを足したものですからx+y。5は釣り銭y。したがって答えは2と1。
なるほど、ITパスポートか基本情報技術者に出そうな問題ですね。なかなか難しい。単純に金額を構成する最小貨幣枚数を取得するだけでなく、店と客の間に行き来する貨幣の枚数を扱うというのが少しひねってありました。
今の学生は大変ですね。まぁ、一応、高度情報処理技術者の末席に座ってる私は解けましたけどね。一応。
以上