本文へ移動

基本情報技術者試験 · 学習ガイド

2025年度 科目B 公開問題の問題・解答解説

旧制度の午前・午後と、2023年度以降の科目A・科目Bの公開問題を区別しています。現在の試験対策では現行シラバスと科目Bの形式を確認してください。公開問題は本試験の全出題を網羅する資料ではありません。

2025年度 科目B 公開問題の概要
30:00

問題番号から選ぶ

4の倍数の個数を求めるアルゴリズム

アルゴリズムとプログラミング · 擬似言語 / ループ処理 / 剰余算

引数として正の整数 n と m(m ≧ n + 10)を受け取り、同じ値を返す2つの関数 function1 と function2 がある。function1 は n から m までの範囲にある 4 の倍数の個数を 1 ずつインクリメントして数え上げる。function2 は、最初に n 以上の最小の 4 の倍数を求めて tempN に格納し、その後 4 ずつ増やしながら個数を数え上げる。プログラム中の空欄 a および b に入れる正しい字句の組合せを選べ。

解答・解説を表示

解答

カ

解説

まず要点:4の倍数を数えるときは、最初の4の倍数を探してから4ずつ増やすと間違えにくいです。連続する4つの整数のうち、4で割り切れる数(4の倍数)は必ず1つだけあります。だから最初の4の倍数を見つけた後は、そこから4ずつ足していけば、4の倍数だけを順番に取り出せます。

解き方

  1. 空欄 a のループでは、tempN がはじめ n で、それが4の倍数でなければ1ずつ増やして最初の4の倍数を探します。n を4で割った余りは0〜3のどれかで、余りが1のときは最大3回増やす必要があるので、a は「iを1から3まで1ずつ増やす」になります。
  2. 空欄 b のループでは、見つけた最小の4の倍数 tempN から始めて、m 以下の4の倍数を数えます。そのため j を4ずつ増やして数えていけばよく、b は「jをtempNから始めてmを超えない範囲で4ずつ増やす」になります。
選択肢 ア不正解
アの a は最大2回しかくり返さないので、n を4で割った余りが1のとき4の倍数までたどり着けません。b も tempN ずつ増やすため個数を正しく数えられません。
選択肢 イ不正解
a のくり返し回数が足りず、b で1ずつ増やすと4の倍数以外の数まで数えてしまうので誤りです。
選択肢 ウ不正解
b の処理は合っていますが、a が1から2まででは n を4で割った余りが1のとき tempN が4の倍数にならず誤りです。
選択肢 エ不正解
a の回数は合っていますが、b で tempN ずつ増やすと4の倍数を正しく並べられないので誤りです。
選択肢 オ不正解
a の回数は合っていますが、b で1ずつ増やすと tempN から m までの整数を全部数えてしまうので誤りです。
選択肢 カ正解
a は最大3回くり返すので4の倍数を正しく見つけられ、b は tempN から4ずつ増やして4の倍数だけを正確に数えています。

答えの内訳

a:iを1から3まで1ずつ増やす
任意の整数 n に対し、4 の倍数は n, n+1, n+2, n+3 のいずれかに必ず存在します。ループ内で tempN が 4 の倍数になった時点で break するため、最大 3 回の加算で n+3 に到達できるよう、ループは 1 から 3 まで回す必要があります。
b:jをtempNから始めてmを超えない範囲で4ずつ増やす
最初の 4 の倍数 tempN から始まり、m を超えない範囲で 4 ずつ値を増やしながらループを繰り返すことで、m 以下の 4 の倍数の個数を正確に数えることができます。

覚えるポイント

  • 任意の周期kの倍数は、連続するk個の整数のなかに必ず1つだけ現れます。

間違えやすいところ

  • tempN が最大3回増えることを見落とし、ループの回数を2回だと思い込むこと。

出題の前提:基本情報技術者試験 科目B 公開問題 擬似言語記述形式

出典:IPA『2025年度 科目B 公開問題』
公式問題冊子 p.4 ↗(www.ipa.go.jp) / 公式問題冊子 p.5 ↗(www.ipa.go.jp)

2025年度 科目B 公開問題

参照した公式資料

IPAが公開した2025年度 科目B 公開問題の問題・解答資料です。