トップ 九州大学 2003年 文系 第5問

九州大学 2003年 文系 第5問 解説

数学A/場合の数数学2/図形と式数学1/方程式不等式テーマ/最大・最小
九州大学 2003年 文系 第5問 解説

注意 画像に「(1)の問題に付随する流れ図」が含まれておらず、(1)を解答するための情報が不足しています。以下は(1)を解答不能とし、「(2)の解答解説」として解釈した場合の出力です。

方針・初手

解法1

(2)の方針

自然数 $A, B, R$ が与えられたとき、調べるべき格子点 $(x, y)$ は第1象限($x$ 軸、$y$ 軸を含まない)にあるため、$x \ge 1$ かつ $y \ge 1$ を満たす。 また、円 $(x-A)^2+(y-B)^2 \le R^2$ の内部および周上にあるため、存在し得る範囲は $$A-R \le x \le A+R$$ $$B-R \le y \le B+R$$ である。したがって、$x$ および $y$ の探索範囲をそれぞれ $\max(1, A-R) \le x \le A+R$、$\max(1, B-R) \le y \le B+R$ として全探索を行えばよい。

各格子点 $(x, y)$ について、 $$(x-A)^2 + (y-B)^2 \le R^2$$ を満たすか判定する。満たす場合は、格子点の個数 $N$ を $1$ 増やす。 さらに、原点からの距離の2乗 $D = x^2+y^2$ を計算し、これまでに見つかった最大距離の2乗 $D_{\max}$ と比較する。

以上の方針に基づくプログラムの流れを以下に記述する。

流れ図の構成(処理手順)

  1. [入力] $A, B, R$ を入力する。
  2. [初期化] $N \leftarrow 0$ $D_{\max} \leftarrow 0$ $X \leftarrow 0, Y \leftarrow 0$
  3. [変数設定] $x_{\min} \leftarrow \max(1, A - R)$ $x_{\max} \leftarrow A + R$ $y_{\min} \leftarrow \max(1, B - R)$ $y_{\max} \leftarrow B + R$
  4. [外部ループ] $x$ を $x_{\min}$ から $x_{\max}$ まで $1$ ずつ増やしながら以下を繰り返す。
    1. [内部ループ] $y$ を $y_{\min}$ から $y_{\max}$ まで $1$ ずつ増やしながら以下を繰り返す。
      1. [条件判定] $(x-A)^2 + (y-B)^2 \le R^2$ か?
        • 満たす場合: $N \leftarrow N + 1$ $D \leftarrow x^2 + y^2$
          • [条件判定] $D > D_{\max}$ か?
            • 満たす場合: $D_{\max} \leftarrow D$ $X \leftarrow x$ $Y \leftarrow y$
            • 満たさない場合:
              • [条件判定] $D = D_{\max}$ かつ $x > X$ か?
                • 満たす場合: $X \leftarrow x$ $Y \leftarrow y$
  5. [出力] $N, X, Y$ を出力する。
  6. [終了]

解説

(1)については問題文に不可欠な「流れ図」の画像が欠落しているため解答不可能である。(2)は数学的な条件をプログラム上の反復処理と条件分岐に落とし込む典型的なアルゴリズム問題である。

第1象限という条件から $x \ge 1, y \ge 1$ を忘れずに設定することが重要である。また、距離の比較においては平方根を計算すると浮動小数点数の誤差が生じる可能性があるため、プログラムでは距離の2乗である $x^2+y^2$ を用いて整数値のまま比較するのが定石である。さらに、最大値が等しい場合のタイブレーク条件($x$ 座標が最大のものを選ぶ)を正しく組み込む必要がある。

答え

(1) 問題不備(流れ図の欠落)のため解答不能。

(2) 方針および流れ図の処理手順は「解法1」に示した通りである。(実際の解答用紙には、解法1の構成に従ってフローチャート記号を用いた図を描画する)

自分の記録

ログインすると保存できます。

誤りを報告

解説の誤り、誤字、表示崩れに気づいた場合は送信してください。ログイン不要です。