专栏文章
题解:P13876 [蓝桥杯 2023 省 Java/Python A] 特殊日期
P13876题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mio3eqg7
- 此快照首次捕获于
- 2025/12/02 12:43 3 个月前
- 此快照最后确认于
- 2025/12/02 12:43 3 个月前
思路
- 关键思路:对于每个年份,咱就直接检查其是否为每个月份的倍数,若是则遍历该月所有日期,检查年份是否为日期的倍数。
- 闰年处理:二月的天数根据闰年规则调整(能被4整除但不能被 整除,或能被 整除的年份为闰年)。
- 边界处理:单独处理 年 月 日。
解决代码
CPP#include <iostream>
using namespace std;
bool check(int a) // 判断闰年
{
if (a % 400 == 0)
return true;
if (a % 100 == 0)
return false;
return (a % 4 == 0);
}
int f(int a, int b) // 计算天数
{
if (b == 2)
{
return check(a) ? 29 : 28;
}
if (b == 4 || b == 6 || b == 9 || b == 11)
{
return 30;
}
return 31;
}
int main()
{
long long ans = 0;
for (int yy = 2000; yy < 2000000; yy++) // 遍历年
{
for (int mm = 1; mm <= 12; mm++) // 遍历月
{
if (yy % mm != 0)
continue;
int days = f(yy, mm);
for (int dd = 1; dd <= days; dd++)
{
if (yy % dd == 0)
{
ans++;
}
}
}
}
int yy = 2000000;
int mm = 1;
int dd = 1;
if (yy % mm == 0 && yy % dd == 0)
{
ans++;
}
cout << ans << endl;
return 0;
}
最终答案是 。
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...