結果

問題 No.8083 12歳
ユーザー iiljj
提出日時 2021-04-01 21:26:29
言語 Python3
(3.13.1 + numpy 2.2.1 + scipy 1.14.1)
結果
AC  
実行時間 43 ms / 1,000 ms
コード長 1,290 bytes
コンパイル時間 275 ms
コンパイル使用メモリ 12,672 KB
実行使用メモリ 11,904 KB
最終ジャッジ日時 2024-12-21 05:42:15
合計ジャッジ時間 22,099 ms
ジャッジサーバーID
(参考情報)
judge4 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 366
権限があれば一括ダウンロードができます

ソースコード

diff #

from datetime import date, time, timedelta
from typing import List

y, n, d = map(int, input().split())
# print(y, n, d)

born_lb: date = date(y-13, 4, 2)
born_ub: date = date(y-12, 4, 1)

date_lb: date = date(y, 4, 2)
date_ub: date = date(y+1, 4, 1)

lb_birthday: List[date] = []
ub_birthday: List[date] = []
for delta in range(n):
    lb_birthday.append(born_lb + timedelta(days=delta))
    ub_birthday.append(born_ub - timedelta(days=delta))

date_lb41: date = date(y, 4, 1)
dt = date_lb41 + timedelta(days=d)


def isok(d: date, ma: date) -> bool:
    if ma.month == 4 and ma.day == 1:
        return True
    if d.month >= 4:
        if d.month == 4 and d.day == 1:
            return False
        else:
            if ma.month >= 4:
                return d.month < ma.month or (d.month == ma.month and d.day <= ma.day)
            else:
                return True
    else:  # 1-3
        if ma.month >= 4:
            return False
        else:
            return d.month < ma.month or (d.month == ma.month and d.day <= ma.day)


ma: int = 0
# print(lb_birthday, dt)
for bd in lb_birthday:
    if isok(bd, dt):
        ma += 1
    # else:
    #     print(bd, dt)

mi: int = 0
# print(ub_birthday, dt)
for bd in ub_birthday:
    if isok(bd, dt):
        mi += 1

print(n-ma, n-mi)
0