1028 - 过生日
时间限制 : 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