专栏文章

题解:P5716 【深基3.例9】月份天数

P5716题解参与者 2已保存评论 1

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
1 条
当前快照
1 份
快照标识符
@mipbumv1
此快照首次捕获于
2025/12/03 09:27
3 个月前
此快照最后确认于
2025/12/03 09:27
3 个月前
查看原文

题意简述

给定年份和月份,求这个月有多少天。

思路

我们用小学学过的 N 种方法都可以知道,1,3,5,7,8,10,121,3,5,7,8,10,12 月有 3131 天,除 22 月之外,其余是 3030 天,但 22 月要关注一下年份问题,如果是闰年, 22 月是 2929 天,否则 2828 天。
那我们可以使用一个数组,其下标对应月份,数值对应天数。在输出之前处理闰年的问题即可。
更详细的解释看下面的注释。

代码

CPP
#include<bits/stdc++.h>
#define int long long
using namespace std;
int a[13];
signed main() {
    ios::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    int y, m; cin >> y >> m;
    a[1] = a[3] = a[5] = a[7] = a[8] = a[10] = a[12] = 31; // 处理大月
    a[4] = a[6] = a[9] = a[11] = 30; a[2] = 28; // 处理小月
    if(y % 4 == 0 && y % 100 != 0) a[2] = 29; 
    if(y % 400 == 0) a[2] = 29;
    // 处理闰年 2 月(四年一闰,百年不闰,四百年再闰)
    cout << a[m]; // 输出
    return 0;
}

评论

1 条评论,欢迎与作者交流。

正在加载评论...