题解|写起来最不痛苦的版本
2026-10-11 16:49:52
发布于:上海
1阅读
0回复
0点赞
思路
看了很多题解,这个题确实有点枯燥,需要做一些重复的工作,写起来非常僵硬
但是通过一些手法还是能比较舒服地写的
可以利用set,建立两个set,一个存31天的月份,一个存30天的(均不含2月)
体现为代码就是``
set<int>sa1,sa2;
sa1.insert({1,3,5,7,8,10,12});//存31天的月份
sa2.insert({4,6,9,11});//存30天的月份
用set的另一个好处就是可以通过sa1.count(m)和sa2.count(m)来判断是31天的月份还是30天的月份
不知道set是啥的可以去查一下就不赘述了
set用法
因为除了二月以外都不会受到年份影响,所以可以先判断月份是不是二月,再考虑是不是闰年,可以省去不必要的判断,和部分不必要的代码
代码
#include <bits/stdc++.h>
using namespace std;
int main(){
set<int>sa1,sa2;
sa1.insert({1,3,5,7,8,10,12});//存31天的月份
sa2.insert({4,6,9,11});//存30天的月份
int y,m;
cin >> y >> m;
//现判断是不是2月,可以省去一些无效的判断
if(sa1.count(m)){
cout << 31;
}else if(sa2.count(m)){
cout << 30;
}else{
if(y % 4 == 0 && y % 100 != 0 || y % 400 == 0)//判断闰年
cout << 29;
else cout << 28;
}
return 0;
}
这里空空如也

有帮助,赞一个