在 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 次浏览

开启你的 职业

通过完成课程认证

入门
广告