《算法筆記》codeup_100000578_E

解答:

#include <cstdio>
using namespace std;

int month[13][2] = {
	{0, 0}, 
	{31, 31}, {28, 29}, {31, 31}, {30, 30}, {31, 31}, {30, 30}, 
	{31, 31}, {31, 31}, {30, 30}, {31, 31}, {30, 30}, {31, 31}
};

bool isLeap(int year) {
	return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}

int main() {
	int input_num;
	scanf("%d", &input_num);
	int y, m, d, gap;
	while(input_num--) {
		scanf("%d %d %d %d", &y, &m, &d, &gap);
		while(gap--) {
			d++;
			if(d == month[m][isLeap(y)] + 1) {  //如果當年是閏年,第二下標爲2,否則爲1
			    m++;
			    d = 1;
			}	 
			if(m == 13) {
			    y++;
			    m = 1;
			}	
		}
		printf("%d-%02d-%02d\n", y, m, d); 

	}
	return 0;
} 

坑:

  1. 沒有多組輸入,代碼接收多組輸入的話會提示“輸出超限”。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章