题目描述
输入 x , y x,y x,y,输出 [ x , y ] [x,y] [x,y] 区间中闰年个数,并在下一行输出所有闰年年份数字,使用空格隔开。
输入格式
输入两个正整数 x , y x,y x,y,以空格隔开。
输出格式
第一行输出一个正整数,表示 [ x , y ] [x,y] [x,y] 区间中闰年个数。
第二行输出若干个正整数,按照年份单调递增的顺序输出所有闰年年份数字。
样例输入
1989 2001
样例输出
3
1992 1996 2000
提示
数据保证, 1582 ≤ x < y ≤ 3000 1582\le x < y \le 3000 1582≤x<y≤3000。
思路分析
这道题的一个小难点是输出顺序:先输出闰年个数,在输出闰年年份。这就要求我们先把找到的闰年保存起来。
参考代码
#include<bits/stdc++.h>
using namespace std;
//用数组保存找到的闰年
int a[1500]; //1582≤x<y≤3000
int main() {
//tot-累计闰年的个数,同时用于标记闰年可以存储在数组a的位置
int x,y,tot=0;
cin >> x >> y;
for(int i=x; i<=y; i++)
{
//如果i是闰年
if((i%4==0&&i%100!=0)||i%400==0)
{
a[tot] = i; //存储闰年
tot++; //闰年个数增加1
}
}
cout << tot << endl;
for(int i=0; i<tot; i++)
cout << a[i] << " ";
return 0;
}