2025年6月14日 星期六

ZeroJudge 解題筆記:o921. 生日快樂 (Birthday)

作者:王一哲
日期:2025年6月14日


ZeroJudge 題目連結:o921. 生日快樂 (Birthday)

解題想法


我會先將今天的日期及生日換算成從1月1日開始計算的天數,這樣在計算答案時比較方便。

Python 程式碼


使用時間約為 21 ms,記憶體約為 3.3 MB,通過測試。
import sys

month = (0, 31, 59, 90, 120, 151, 181,
         212, 243, 273, 304, 334, 365)  # 每月累計天數
for line in sys.stdin:
    m, d = map(int, line.split())  # 今天的月日
    today = month[m-1] + d  # 今天轉成從1月1日開始的天數
    mb, db = map(int, input().split())  # 生日的月日
    birthday = month[mb-1] + db  # 生日轉成從1月1日開始的天數
    print((birthday - today + 365) % 365)


C++ 程式碼


使用時間約為 2 ms,記憶體約為 88 kB,通過測試。
#include <cstdio>
using namespace std;

int main() {
    int month[13] = {0, 31, 59, 90, 120, 151, 181,
                     212, 243, 273, 304, 334, 365};  // 每月累計天數
    int m, d;  // 今天的月日
    while(scanf("%d %d", &m, &d) != EOF) {
        int today = month[m-1] + d;  // 今天轉成從1月1日開始的天數
        int mb, db; scanf("%d %d", &mb, &db);  // 生日的月日
        int birthday = month[mb-1] + db;  // 生日轉成從1月1日開始的天數
        printf("%d\n", (birthday - today + 365) % 365);
    }
    return 0;
}


沒有留言:

張貼留言