Official

A - Happy Birthday! 4 Editorial by sounansya


AtCoder をはじめたばかりで何をしたらよいか分からない方は、まずは practice contest の問題A「Welcome to AtCoder」を解いてみてください。基本的な入出力の方法が載っています。
また、プログラミングコンテストの問題に慣れていない方は、AtCoder Beginners Selection の問題をいくつか解いてみることをおすすめします。


今から \(k\) 年後 \((k \geq 0)\) に高橋君の年齢が青木君の年齢のちょうど \(Z\) 倍になるとして式を立ててみると、次のようになります。

\[X+k=Z(Y+k)\]

この式を式変形して \(k\) について解くと、以下のようになります。

\[X+k=YZ+Zk\]

\[(Z-1)k=X-YZ\]

\[k=\displaystyle\frac{X-YZ}{Z-1}\]

\(k\) は非負整数という制約があるので、この問題の答えが Yes となることは

  • \(X-YZ\)\(Z-1\) で割り切れる
  • \(X-YZ \geq 0\) が成り立つ

\(2\) つが両方成り立つことと同値です。

この \(2\) つの条件の判定は if 文を用いることで実装することができます。

以上を適切に実装することでこの問題に正答することができます。

実装例(Python3)

x, y, z = map(int, input().split())
if (x - y * z) % (z - 1) == 0 and x - y * z >= 0:
  print("Yes")
else:
  print("No")

posted:
last update: