Official

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 を出力します。

アルゴリズム

  1. \(N\)\(W\)\(K\) を入力として受け取る
  2. 等間隔に植えたときの間隔 \(\text{interval} = \frac{W}{N-1}\) を計算する
  3. \(\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: