给你一个正整数y表示开始的年份,再给你一个正整数N,请求出从开始年份起第N个闰年。
给你一个正整数y表示开始的年份,再给你一个正整数N,请求出从开始年份起第N个闰年。
注意:如果开始年份y是闰年,那么认为开始年份后的第一个闰年就是y。
分析输入的year是否为闰年,并分为两类分别计算。
如果给定的年份是闰年,看N的值。当N不为1时,需要注意有的年份通过简单的 year+4*(N-1)不能解决问题。因为有时候需要过八年才是闰年。例如1896年是闰年,但是1896+4即1900年并不是闰年。
现在只能想到通过创建另一个变量来监控进行了多少个闰年。
千万注意
会有八年一次的闰年
#include<iostream>
using namespace std;
//判断是否为闰年
int leap(int year)
{
if (year % 400 == 0 || (year % 100 != 0 && year % 4 == 0))
{
return 1;
}
else
return 0;
}
int main()
{
int year;
cin >> year;
int n;
cin >> n;
if (leap(year)) {
if(n==1)
cout << year;
else
{
int sum = 0;
for (int j = 1;; j++)
{
if(leap(year+4*j))
{
sum++;
}
if (sum == n-1)
{
cout << year + 4*j;
break;
}
}
}
}
else
{
year = year + 4 * (n + 1);
//在四年的范围内寻找闰年
for(int i=1;i<4;i++)
{
if(leap(year-i))
{
cout << year - i;
}
}
}
}