1028 - 过生日

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 32 MB

小明出生在一个闰年,他想知道什么时候可以过生日,你能告诉他吗?
给你一个正整数Y,表示起始年份,和一个正整数N,你的任务是告诉小明从Y年开始第N个闰年是哪一年。
注意:如果Y就是闰年,那么第一个闰年就是Y。

题目输入

输入的第一行为一个整数T,表示测试数据的组数。
每一组输入包含两个正整数Y和N(1<=N<=10000)。

题目输出

对于每组输入,输出从Y年开始第N个闰年是哪一年。

输入/输出样例

输入格式

3
2005 25
1855 12
2004 10000

输出格式

2108
1904
43236

C语言解答

#include<stdio.h>
#define L y%4==0&&y%100!=0||y%400==0

int main()
{
	int t,y,n,m;
	scanf("%d",&t);
	while(t--)
	{
		scanf("%d%d",&y,&n);
		m=0;
		while(1)
		{
			if(L)
				m++;
			if(m==n)
				break;
			y++;
		}
		printf("%d\n",y);
	}
	return 0;
}

C++解答

#include<stdio.h>
#define L y%4==0&&y%100!=0||y%400==0

int main()
{
	int t,y,n,m;
	scanf("%d",&t);
	while(t--)
	{
		scanf("%d%d",&y,&n);
		m=0;
		while(1)
		{
			if(L)
				m++;
			if(m==n)
				break;
			y++;
		}
		printf("%d\n",y);
	}
	return 0;
}

Java解答

import java.util.Scanner;

public class Main {

	private static boolean isPrime(int year){
		return year%4==0&&year%100!=0 || year%400==0;
	}
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int t = in.nextInt();
		while(t-->0){
			int year = in.nextInt();
			int next = in.nextInt()-1;
			while(!isPrime(year))year++;
			while(next>0){
				if(isPrime(year+=4))next--;
			}
			System.out.println(year);
		}
	}

}

Python解答

def isLeap(year):
    if year%4==0 and year%100!=0 or year%400==0:
        return 1
    else:
        return 0
t = input()
while t:
    [x,y]=raw_input().split()
    year,n = int(x),int(y)
    #print year,n
    while True:
        if isLeap(year):
            #print year
            n-=1
            if n==0:break
        year+=1
    print year
    t -= 1
    if t == 0: break