在 C++ 中查詢下一個相同的日曆年


假設我們有一個年份 Y。查詢與 Y 相同的下一個日曆年。因此,2017 年的日曆與 2023 年相同。

如果 x 滿足以下兩個條件,則年份 X 與給定的先前的年份 Y 相同。

  • x 從與年份同一天開始,
  • 如果 y 是閏年,則 x 也是閏年,如果 y 是平年,則 x 也是平年。

這個想法是從明年開始逐個檢查所有年份。我們將跟蹤向前移動的天數。如果總共移動了 7 天,那麼今年將從同一天開始。我們還要檢查當前年份是否是閏年,如果是閏年,則也要檢查 y。如果滿足這兩個條件,則返回當前年份。

示例

 線上演示

#include<iostream>
using namespace std;
int countExtraDays(int y) {
   if (y%400==0 || y%100!=0 && y%4==0)
   return 2;
   return 1;
}
int nextIdenticalYear(int y) {
   int days = countExtraDays(y);
   int x = y + 1;
   for (int sum=0; ; x++) {
      sum = (sum + countExtraDays(x)) % 7;
      if ( sum==0 && (countExtraDays(x) == days))
      return x;
   }
   return x;
}
int main() {
   int curr = 2019;
   cout << "Next identical year of " << curr <<" is: " << nextIdenticalYear(curr);
}

輸出

Next identical year of 2019 is: 2030

更新於: 2019 年 12 月 19 日

170 次瀏覽

開啟你的 職業

透過完成課程認證

入門
廣告
© . All rights reserved.