天天看點

HDU 1076 An Easy Task(數學題)

                                                                        An Easy Task

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 19832    Accepted Submission(s): 12685

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.

題解:找出輸入的從Y開始數的第N個閏年。。。

AC代碼:

#include<iostream>
using namespace std;
int f(int,int);
int main()
{
  int N,Y;
  int n;
  cin>>n;  
  for(int i=0;i<n;i++)
  {
    cin>>Y>>N;
    cout<<f(Y,N)<<endl;
  }
  return 0;
}
int f(int n,int m)
{
   int i=0;
   while(1)
   {
     if((n%4==0&&n%100!=0)||n%400==0)
     {
       i++;
       if(i==m)break;
       n+=4;
     }
     else n++;
   }
   return n;
}