日期:2026年3月29日
ZeroJudge 題目連結:d041. 11219 - How old are you?
解題想法
用自訂函式計算年齡,如果今天的日、月、年分別為 $dt, mt, yt$,生日的日、月、年分別為 $db, mb, yb$,先假設年齡 $age = yt - yb$,接下來再依照 $(mt, dt), (mb, db)$ 修正 $age$ 的值,如果 $mt < mb$ 或是 $mt = mb, dt < db$,則 $age$ 減 1。
Python 程式碼
使用時間約為 7 ms,記憶體約為 2.8 MB,通過測試。
def cal_age(today, birthday):
dt, mt, yt = map(int, today.split('/'))
db, mb, yb = map(int, birthday.split('/'))
age = yt - yb
#if (mt, dt) < (mb, db): age -= 1 # 第5、6行效果相同
if mt < mb or (mt == mb and dt < db): age -= 1
if age < 0: return "Invalid birth date"
if age > 130: return "Check birth date"
return str(age)
T = int(input())
for t in range(1, T+1):
_ = input()
ans = cal_age(input(), input())
print(f"Case #{t:d}: {ans:s}")