Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 다음 동일한 달력 연도 찾기

<시간/>

연도가 Y라고 가정합니다. Y와 동일한 다음 연도를 찾습니다. 따라서 2017년의 달력은 2023년과 동일합니다.

이 두 조건이 일치하는 경우 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