日期: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;
}
沒有留言:
張貼留言