मान लीजिए हमारे पास एक वर्ष Y है। Y के अगले समान कैलेंडर वर्ष को ढूंढें। तो 2017 का कैलेंडर 2023 के समान है।
एक वर्ष X, दिए गए पिछले वर्ष Y के समान है यदि यह इन दो शर्तों को पूरा करता है।
- x उसी दिन से शुरू होता है जिस दिन वर्ष y शुरू होता है,
- यदि y लीप वर्ष है, तो x भी लीप वर्ष हो, यदि y सामान्य वर्ष है, तो x भी सामान्य वर्ष हो।
विचार अगले वर्ष से एक-एक करके सभी वर्षों की जांच करना है। हम आगे बढ़े दिनों की संख्या को ट्रैक करेंगे। यदि कुल 7 आगे बढ़े दिन हैं, तो वर्तमान वर्ष उसी दिन से शुरू होता है। हम यह भी जांचते हैं कि वर्तमान वर्ष लीप वर्ष है या नहीं, यदि हां, तो y के लिए भी जांचें। यदि दोनों शर्तें पूरी होती हैं, तो हम वर्तमान वर्ष को वापस करते हैं।
उदाहरण
#includeusing 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