HDU 1076 An Easy Task

来源:互联网 发布:阿松为什么被禁 知乎 编辑:程序博客网 时间:2024/05/17 07:09
An Easy Task
Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u
Submit Status

 

 

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

32005 251855 122004 10000
 

Sample Output

2108190443236

Hint

 We call year Y a leap year only if (Y%4==0 && Y%100!=0) or Y%400==0.          
 

分析

对每个年份进行判定,跑一次循环即可。

 

AC代码如下:

#include <cstdio>#include <cstring>#include <algorithm>using namespace std;bool isleapyear(int n){    if(n%400 == 0) return true;    if(n%100 != 0 && n % 4 == 0) return true;    return false;}int main(){    int t,y,n;    scanf("%d",&t);    while(t--)    {        int ans = 0;        scanf("%d%d",&y,&n);        if(isleapyear(y)) ans++;        int yu = y%4;        y += 4 - yu;                   //对第一个对4%==0的年份进行判定        if(isleapyear(y)) ans++;        while(ans < n)        {            y += 4;            if(isleapyear(y)) ans++;   //对每个年份判定        }        printf("%d\n",y);    }    return 0;}


 

0 0