けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

AtCoder ARC 002 B - 割り切れる日付 (試験管灰色)

現在の AtCoder ではあまり出なさそうな問題。こういうのは Python 楽だね。

問題概要

(西暦) ÷ (月) ÷ (日) が整数となるような日付を「割り切れる日付」と呼ぶ。

日付が "2020/11/14" のようなフォーマットで与えられる。その日付以降の最も早い「割り切れる日付」を求めよ。

制約

  • "1000/01/01" 以降、"2999/12/31" 以前

考えたこと

単に日付を 1 日ずつ進めていって、最初に割り切れたところで出力するだけなのだが...C++ でやると面倒...

Python なら、日付のインクリメントを datetime.timedelta で扱えるのが楽。

コード

from datetime import datetime, timedelta
formatter = '%Y/%m/%d'
date = datetime.strptime(input(), formatter)

while True:
    y, m, d = date.year, date.month, date.day
    if y % (m * d) == 0:
        break
    date += timedelta(days = 1)

res = date.strftime(formatter)
print(res)