A - 花壇の植え付け / Planting the Flower Bed Editorial by admin
Claude 4.5 Opus概要
\(N\) 本の花を花壇に等間隔で植えたとき、隣り合う花の間隔が \(K\) センチメートル以上になるかを判定する問題です。
考察
重要な気づき
この問題のポイントは、\(N\) 本の花を等間隔に植えたときの間隔を正しく計算することです。
具体例で考えてみましょう。
例1: \(N = 3\) 本の花を横幅 \(W = 10\) センチメートルの花壇に植える場合
花壇: [0]--------[5]--------[10]
花1 花2 花3
- 花は位置 \(0, 5, 10\) に植えられます
- 間隔の数は 2つ(花1と花2の間、花2と花3の間)
- 各間隔は \(10 \div 2 = 5\) センチメートル
例2: \(N = 5\) 本の花を横幅 \(W = 20\) センチメートルの花壇に植える場合
花壇: [0]---[5]---[10]---[15]---[20]
- 間隔の数は 4つ
- 各間隔は \(20 \div 4 = 5\) センチメートル
一般化
\(N\) 本の花を植えると、間にできる隙間(間隔)の数は \(N - 1\) 個です。
花壇の横幅 \(W\) をこの \(N - 1\) 個の間隔で等しく分けるので、1つあたりの間隔は:
\[\text{interval} = \frac{W}{N - 1}\]
この間隔が \(K\) 以上であれば、花は健康に育つ条件を満たします。
判定条件
\[\frac{W}{N - 1} \geq K\]
これが成り立てば Yes、成り立たなければ No を出力します。
アルゴリズム
- \(N\)、\(W\)、\(K\) を入力として受け取る
- 等間隔に植えたときの間隔 \(\text{interval} = \frac{W}{N-1}\) を計算する
- \(\text{interval} \geq K\) なら
Yes、そうでなければNoを出力する
計算量
- 時間計算量: \(O(1)\)(四則演算と比較のみ)
- 空間計算量: \(O(1)\)(変数を数個使用するのみ)
実装のポイント
間隔の数は \(N - 1\):\(N\) 本の花の間にある隙間の数を正しく把握することが重要です。これは「\(N\) 個の点を結ぶ線分の数」と同じ考え方です。
除算の扱い:Python では
/演算子を使うと浮動小数点数で計算されるため、\(W\) や \(N-1\) が割り切れない場合でも正しく比較できます。整数のみで判定する方法:不等式 \(\frac{W}{N-1} \geq K\) は、両辺に \((N-1)\) を掛けて \(W \geq K \times (N-1)\) と変形すれば、整数のみで判定することも可能です。
ソースコード
N, W, K = map(int, input().split())
# N本の花を等間隔に植える場合、間隔の数は N-1
# 花壇の幅Wを N-1 等分した間隔が K 以上であれば条件を満たす
interval = W / (N - 1)
if interval >= K:
print("Yes")
else:
print("No")
この解説は claude4.5opus によって生成されました。
posted:
last update: