Ignatius 出生於閏年,想知道從某年份 Y 開始的第 N 個閏年是哪一年。輸入測試用例數 T,每組給定 Y 和 N (1 ≤ N ≤ 10000),輸出第 N 個閏年。若 Y 本身是閏年,則視為第 1 個。
閏年判斷規則:(Y % 4 == 0 && Y % 100 != 0) || Y % 400 == 0
直接模擬即可:從年份 Y 開始逐年遞增,判斷是否為閏年,計數器遞減至 0 輸出當前年份。數據範圍較小(N ≤ 10000,年份增長約 4 萬年),暴力枚舉完全在時限內。
#include <stdio.h>
int main() {
int ncase;
scanf("%d", &ncase);
while (ncase--) {
int year, n;
scanf("%d %d", &year, &n);
for (int i = year; ; i++) {
if ((i % 4 == 0 && i % 100) || i % 400 == 0) // 注意:i%100 非零即真
n--;
if (n == 0) {
printf("%d\n", i);
break;
}
}
}
return 0;
}
i % 100 利用 C 語言非零即真特性,等價於 i % 100 != 0。2005 25 → 2108、1855 12 → 1904、2004 10000 → 43236。