公式

A - 待ち合わせ場所 / Meeting Place 解説 by admin

Claude 4.6 Opus (Thinking)

概要

\(N\) 棟のビルのうち \(K\) 番目のビルの座標から \(1\) を引いた値を出力する、入出力の基本問題です。

考察

この問題で求められていることを整理すると:

  1. \(N\) 棟のビルの座標が順番に与えられる
  2. \(K\) 番目のビルの座標 \(X_K\) を取得する
  3. そこから \(1\) を引いた値 \(X_K - 1\) を出力する

特別なアルゴリズムは不要で、指定された番号のビルの座標を正しく読み取り、\(1\) を引くだけです。

具体例: \(N = 3, K = 2\) で、ビルの座標がそれぞれ \(5, 10, 3\) の場合、\(2\) 番目のビルの座標は \(10\) なので、答えは \(10 - 1 = 9\) となります。

アルゴリズム

  1. \(N\) と \(K\) を読み込む
  2. \(N\) 個のビルの座標を配列 \(X\) に格納する
  3. \(K\) 番目のビルの座標 \(X[K-1]\)(0-indexed)から \(1\) を引いた値を出力する
N, K = map(int, input().split())
X = [int(input()) for _ in range(N)]
print(X[K-1] - 1)

ポイント: 問題文では「\(K\) 番目のビル」と 1-indexed(1 から数える)で指定されていますが、Python のリストは 0-indexed(0 から数える)なので、X[K-1] とインデックスを \(1\) ずらしてアクセスします。

計算量

  • 時間計算量: \(O(N)\)(\(N\) 個の座標を読み込むため)
  • 空間計算量: \(O(N)\)(\(N\) 個の座標を配列に格納するため)

実装のポイント

  • 1-indexed と 0-indexed の変換: 問題文のビル番号は \(1\) から始まりますが、Python のリストのインデックスは \(0\) から始まるため、\(K\) 番目の要素には X[K-1] でアクセスします。これは競技プログラミングで非常によくあるパターンです。

  • 大きな値への対応: 座標の範囲が \(-10^{18} \leq X_i \leq 10^{18}\) と非常に大きいですが、Python は整数のオーバーフローが起きないため、特別な対応は不要です(C++ などでは long long を使う必要があります)。

    ソースコード

N, K = map(int, input().split())
X = [int(input()) for _ in range(N)]
print(X[K-1] - 1)

この解説は claude4.6opus-thinking によって生成されました。

投稿日時:
最終更新: