Official
A - 落葉の掃除 / Fallen Leaves Cleaning Editorial by admin
gpt-6-astra-medium概要
庭に落ちる葉の総数と、\(D\) 日間で掃除できる葉の最大枚数を比較し、すべて掃除できるか判定します。
考察
木は \(A\) 本あり、各木から \(B\) 枚の葉が落ちるので、落葉の総数は \(A \times B\) 枚です。
一方、\(1\) 日に最大 \(C\) 枚掃除できるため、\(D\) 日間では最大 \(C \times D\) 枚掃除できます。したがって、すべて掃除できる条件は
\(A \times B \leq C \times D\)
です。
例えば、\(A=3,\ B=4,\ C=5,\ D=3\) の場合、落葉は \(12\) 枚、掃除できる枚数は最大 \(15\) 枚なので、答えは Yes です。
日ごとに残りの落葉を減らすシミュレーションでも、この制約なら十分間に合います。ただし、積を比較すれば繰り返し処理は不要です。
また、必要な日数を整数除算で \(A \times B \div C\) と求めると、端数が切り捨てられて誤判定することがあります。例えば、落葉が \(12\) 枚で \(1\) 日に \(5\) 枚掃除できる場合、必要なのは \(2\) 日ではなく \(3\) 日です。積の比較なら、こうした端数処理を考えずに判定できます。
アルゴリズム
- \(A, B, C, D\) を読み込みます。
- 落葉の総数 \(A \times B\) と、掃除できる最大枚数 \(C \times D\) を計算します。
- \(A \times B \leq C \times D\) なら
Yes、そうでなければNoを出力します。
計算量
- 時間計算量: \(O(1)\)
- 空間計算量: \(O(1)\)
実装のポイント
落葉の総数と掃除できる最大枚数が等しい場合も、すべて掃除できます。比較には
<ではなく<=を使います。出力は大文字・小文字を区別して、指定どおり
YesまたはNoとします。ソースコード
import sys
def main():
A, B, C, D = map(int, sys.stdin.readline().split())
print("Yes" if A * B <= C * D else "No")
main()
この解説は gpt-6-astra-medium によって生成されました。