牛客网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
输出结果
- 使用
这个简单的问题是理解闰年规则和基础逻辑运算的好例子。在实际编程中,日期和时间处理是常见的任务,理解闰年的判定对于正确处理日期计算非常重要。