HDU 1076(第n个生日在哪一年)
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;
}
作者:火星十一郎
本文版权归作者火星十一郎所有,欢迎转载和商用,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.

浙公网安备 33010602011771号