An Easy Task
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 10000 Accepted Submission(s): 6198
Problem Description
Ignatius was born in a leap year, so he want to know when he could hold his birthday party. Can you tell him?
Given a positive integers Y which indicate the start year, and a positive integer N, your task is to tell the Nth leap year from year Y.
Note: if year Y is a leap year, then the 1st leap year is year Y.
Input
The input contains several test cases. The first line of the input is a single integer T which is the number of test cases. T test cases follow.
Each test case contains two positive integers Y and N(1<=N<=10000).
Output
For each test case, you should output the Nth leap year from year Y.
Sample Input
3
2005 25
1855 12
2004 10000
Sample Output
2108
1904
43236
Hint
We call year Y a leap year only if (Y%4==0 && Y%100!=0) or Y%400==0.
解题思路:
题目要求计算第那个闰年的年份,当给出的初始值是一个闰年时,计数值为一
代码:
#include<iostream>
#include<cmath>
using namespace std;
bool Isleapyear(int n)
{
if(n%400==0||((n%4==0)&&(n%100!=0)))
return true;
else
return false;
}
int main()
{
int t;
int y,n,m;
cin>>t;
while(t--)
{
m=0;
cin>>y>>n;
if(Isleapyear(y))
m=1;
else
m=0;
if(m==0)
{
for(int i=1;i<=100;i++)
{
if(Isleapyear(y+i))
{
y=y+i;
m=1;
break;
}
}
}
for(m;m<n;)
{
y+=4;
if(Isleapyear(y))
m+=1;
}
cout<<y<<endl;
}
return 0;
}