HDU 1076(第n个生日在哪一年)

  1. 云栖社区>
  2. 博客>
  3. 正文

HDU 1076(第n个生日在哪一年)

哈沙给 2012-07-30 10:11:00 浏览555
展开阅读全文

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

/*
该题N定义为50000RE,100000AC
因为该题year没范围,但因为要可以求第10000个生日,
所以 year的范围也绝对不会是INT_MAX,
考虑到不知year的范围,先试用is_leap(int year) 函数判断
闰年,不用初始化,若超时,再按我这种方法
*/ 
#include<string.h>
#include<stdlib.h>
#define N 100000
int leap[N];
void isleap()
{
    int i,j;
    memset(leap,0,sizeof(leap));
    for(i=1;i<N;i++)
    if(i%4==0&&i%100!=0||i%400==0)
        leap[i]=1;
}
int main()
{
    int i,j,T;
    int year,num,cnt;
    scanf("%d",&T);
    isleap();
    while(T--)
    {
        cnt=0;
        scanf("%d %d",&year,&num);
        for(i=year;cnt<num;i++)
        if(leap[i])
            cnt++;
        printf("%d\n",i-1);
    }
    system("pause");
    return 0;
}
        
    
     

 

网友评论

登录后评论
0/500
评论