hdu1076(基础)

43 篇文章 0 订阅

An Easy Task

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 19268    Accepted Submission(s): 12326


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,问从y年开始第K个闰年是什么?
//解题思路:由闰年的性质(y%4==0&&y%100!=0)||(y%400==0) 可知所有的闰年一定是4的倍数.
//从y开始,碰到闰年如果还未到第k个,那么这一年直接加4再往后搜索,因为如果某一年是闰年.
//那么其后的三年一定不是闰年,其加4后可能是闰年.如果碰到不是闰年,就一年一年的往后遍历. 
#include<stdio.h>
#include<string.h>
bool jude(int year)
{
	if((year%4==0&&year%100!=0)||year%400==0)
	 return true;
	return false;
}
int main()
{
   	int n,i,j,k,y,m;
   	scanf("%d",&n);
   	while(n--)
   	{
   	   scanf("%d%d",&y,&m);
   	   if(jude(y)) k=1,y+=4;
   	   else        k=0,y+=1;
   	   while(k<m)
   	   {
   	      if(jude(y)) //判断是否为润年. 
		  {
		  	k++;
		  	if(k==m) break;   //结束 
		  	else     y+=4;   //是闰年但不是第k个,往后推4年继续判断。 
		  }	
		  else y++;    //不是闰年,从下一年继续判断. 
	   }
	   printf("%d\n",y);
	}
	return 0;
} 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bokzmm

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值