C - An Easy Task
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
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 && Y0!=0) or Y@0==0.题意分析:
这道题本身没有什么难度,就是求输入的年份之后第N个闰年是那年。
解题思路:
这道题唯一的问题就是判断闰年,题目的提示中还给出了判断条件。根据判断条件编码就完了,是闰年就加一,最后到N时就结束循环,输出年份。
编码:
#include <bits/stdc++.h> using namespace std; int main() { int y, n, t; cin >> t; while (t--) { cin >> y >> n; while (n > 0) { if (y % 4 == 0 && y % 100!=0) { n--; } else if (y % 400 == 0) { n--; } y++; } cout << --y << endl; } return 0; }最后:
这道题本身是一次过,但是在测试的时候自己还遇到了一些小问题,年数循环的时候的y++会导致最后的答案总是+1,所以强制输出了--y。