戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

応用情報技術者 2011年 春期 午前201


問題文

整数Aを整数Bで割った余り が次のとおり定義されているとき、適切な式はどれか。   〔の定義〕  は、除数と同じ符号をもつ整数又は0であり、その絶対値は、の絶対値よりも小さい。ある整数を選ぶことによって、    が成立する。

選択肢

rem(11, 5) = 2
rem(11, -5) = -1
rem(12, -5) = -3(正解)
rem(-11, 5) = 1

🔒 解説は解答すると表示されます

剰余の符号規則【午前2解説】

正解の理由

定義により、余り rem(A, B) は「除数 B と同じ符号(または 0)で、かつその絶対値が |B| より小さい」整数です。選択肢のうち、12 を -5 で割る形で となるように整数 N を選び、かつ r が負(除数 -5 と同符号)で を満たすのは、 のときに となり、余り が得られます。したがって の rem(12, -5) = -3 が定義に合致します。

解法ステップ

  1. 除数 B の符号を確認する(正/負)。
  2. 整数 N を適切に選び、 が「除数と同符号(または0)であり、絶対値が 未満」になるようにする。
  3. 具体的には、数学的な床関数を使うと簡潔に求められる:整数商を とすると が成り立ちます。特に実装では Python の // (床除算)や math.floor を使うと誤りが少なくなります。
例(今回の問題の流れ):
  • B=-5(負)なので余りは負または0。
  • A/B = 12/(-5) = -2.4、 より

選択肢別の誤答解説

  • ア: rem(11,5) = 2
    11 = 5×2 + 1 で余りは 1 です。余りの符号(5 と同符号の正)および絶対値条件は満たしますが、与えられた値 2 は成り立ちません。正しくは rem(11,5)=1。
  • イ: rem(11,-5) = -1
    一見 11 = (-5)×(-2) + 1 と置けるため「余り 1」が得られますが、余り 1 は除数 -5 と符号が異なり定義に反します。正しい N を選ぶと 11 = (-5)×(-3) + (-4) となり、rem(11,-5) = -4 です(余りは除数と同符号=負、かつ |r|<5 を満たす)。
  • : rem(12,-5) = -3
    上述のように 12 = (-5)×(-3) + (-3) で余り -3 は除数 -5 と同符号かつ |−3|<5 を満たすため正しい。
  • エ: rem(-11,5) = 1
    -11 = 5×(-3) + 4 で余りは 4 になります(除数 5 と同符号の正、かつ |4|<5)。したがって rem(-11,5)=4 であり、1 は誤りです。補足として「除数が正なら余りは非負(0 以上)」です。

よくある誤解

  1. 余りの符号は被除数(A)に合わせると誤る
    被除数の符号ではなく「除数(B)の符号」に合わせるのが定義です(もしくは 0)。
  2. 0 方向への切り捨て(商を切り捨てる)で余りを求めると失敗する場合がある
    特に負の除数や被除数があると、商を「整数に単純に切り捨て(符号方向に切る)」する方法では定義条件を満たさない余りになることがあるため、数学的な床(floor)を使うのが安全です。
  3. プログラミング言語の % の挙動をそのまま鵜呑みにすると危険
    言語によって剰余の定義が異なるため注意が必要です(下の補足参照)。

補足コラム

  • 数学的定義(今回の定義)に沿う実用的な計算式は です()。この式は除数の符号に依存せず正しく余りを与えます。
  • プログラミング言語の例:Python の A % B はこの数学的定義に従い、余りは除数 B と同符号になります(例: 11 % -5 = -4、-11 % 5 = 4)。一方、C 言語の % 演算子は商の切り方向によって挙動が異なる歴史的経緯があり、言語仕様やバージョンによって扱いが異なるため注意が必要です。
簡単な Python 例:
A = 11
B = -5
import math
q = math.floor(A / B)   # -3
r = A - B * q           # -4
print(r)                # -4

FAQ

Q1. 除数が負のときはどうやって商 N を見つければよいですか?
A1. A/B の値を計算して数学的床(floor)を取ると良いです。 を N とすると余りは上の式で直接得られます。
Q2. 余りが 0 のときは符号はどう扱う?
A2. 余り 0 はどちらの符号とも矛盾しないため許容されます(定義中の「除数と同じ符号又は0」に合致)。
Q3. 商を単に切り捨て(0 方向)してもだめですか?
A3. 被除数と除数が異符号のときは、0 方向への切り捨て(整数部の単純取り)では余りが除数と異符号になりがちで、定義に合わない場合があります。床(floor)を使うことを推奨します。

関連キーワード: 剰余、符号規則、床関数、負の除算、剰余算査定
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

応用情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について