牛客網NC22012:判斷閏年問題詳解
📝 題目描述
題號:NC22012(牛客網)
時間限制:C/C++/Rust/Pascal 1秒,其他語言2秒
空間限制:C/C++/Rust/Pascal 32 M,其他語言64 M
判斷一個整數n是否是閏年。
📥 輸入描述
輸入一個整數n(1≤n≤2018)
📤 輸出描述
是閏年輸出"yes",否則輸出"no"
🌰 示例
示例1:
輸入: 2000
輸出: yes
示例2:
輸入: 1900
輸出: no
🔍 問題分析
這個問題要求我們判斷一個年份是否為閏年。在現代歷法中,閏年的判定規則如下:
- 普通年能被4整除且不能被100整除的為閏年
- 世紀年能被400整除的是閏年
這兩條規則可以合并為一個邏輯表達式:(year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)
💡 解題思路
- 讀取輸入的年份n
- 使用閏年判定公式進行判斷
- 根據判斷結果輸出"yes"或"no"
📊 代碼實現
#include<bits/stdc++.h>
using namespace std;int main(){int n;cin>>n;if(n%4==0&&n%100!=0||n%400==0)cout<<"yes"<<endl;else cout<<"no"<<endl;return 0;
}
📝 代碼解釋
- 引入必要的頭文件
bits/stdc++.h
,這是一個包含了大部分常用C++標準庫的頭文件 - 定義變量n用于存儲輸入的年份
- 通過
cin
讀取用戶輸入的年份 - 使用條件語句檢查年份是否滿足閏年條件:
n%4==0&&n%100!=0
:年份能被4整除但不能被100整除||n%400==0
:或者年份能被400整除
- 如果條件成立,輸出"yes",否則輸出"no"
?? 復雜度分析
- 時間復雜度:O(1),只需要進行簡單的算術運算和判斷
- 空間復雜度:O(1),只使用了常數級別的存儲空間
🔑 知識點總結
-
閏年規則:
- 普通年份能被4整除但不能被100整除的是閏年
- 世紀年份(能被100整除的年份)能被400整除的是閏年
-
邏輯表達式:
- 使用
&&
(與)和||
(或)運算符組合多個條件 - 注意運算符優先級,
&&
優先級高于||
- 使用
-
輸入輸出:
- 使用
cin
讀取輸入 - 使用
cout
輸出結果
- 使用
這個簡單的問題是理解閏年規則和基礎邏輯運算的好例子。在實際編程中,日期和時間處理是常見的任務,理解閏年的判定對于正確處理日期計算非常重要。