题解:洛谷 P5737 【深基7.例3】闰年展示
【题目来源】
【题目描述】
输入 \(x,y\),输出 \([x,y]\) 区间中闰年个数,并在下一行输出所有闰年年份数字,使用空格隔开。
【输入】
输入两个正整数 \(x,y\),以空格隔开。
【输出】
第一行输出一个正整数,表示 \([x,y]\) 区间中闰年个数。
第二行输出若干个正整数,按照年份单调递增的顺序输出所有闰年年份数字。
【输入样例】
1989 2001
【输出样例】
3
1992 1996 2000
【算法标签】
《洛谷 P5737 闰年展示》 #模拟#
【代码详解】
#include <bits/stdc++.h> // 包含标准库头文件(万能头文件)
using namespace std; // 使用标准命名空间
/**
* 判断闰年函数
* @param n 待判断的年份
* @return 如果是闰年返回true,否则返回false
*/
bool fun(int n)
{
// 闰年判断条件:
// 1. 能被4整除但不能被100整除
// 2. 或者能被400整除
if ((n % 4 == 0 && n % 100 != 0) || n % 400 == 0)
{
return true;
}
return false;
}
int main()
{
int x, y; // 定义变量:起始年份x和结束年份y
int sum = 0; // 定义变量:闰年总数
cin >> x >> y; // 输入年份范围
// 统计给定范围内的闰年数量
for (int i = x; i <= y; i++)
{
if (fun(i)) // 如果是闰年
{
sum++; // 闰年计数加1
}
}
// 输出闰年总数
cout << sum << endl;
// 输出所有闰年,用空格分隔
for (int i = x; i <= y; i++)
{
if (fun(i)) // 如果是闰年
{
cout << i << " "; // 输出该年份
}
}
return 0; // 程序正常结束
}
【运行结果】
1989 2001
3
1992 1996 2000
浙公网安备 33010602011771号