CCF CSP 201509-2.日期计算

问题描述

  给定一个年份y和一个整数d,问这一年的第d天是几月几日?
  注意闰年的2月有29天。满足下面条件之一的是闰年:
  1) 年份是4的整数倍,而且不是100的整数倍;
  2) 年份是400的整数倍。

输入格式

  输入的第一行包含一个整数y,表示年份,年份在1900到2015之间(包含1900和2015)。
  输入的第二行包含一个整数dd在1至365之间。

输出格式

  输出两行,每行一个整数,分别表示答案的月份和日期。

样例输入

2015
80

样例输出

3
21

样例输入

2000
40

样例输出

2
9

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <cstdio>

int main() {
int y, d;
scanf("%d %d", &y, &d);

int months[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
// 判断是否为闰年,闰年二月有29天
if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0) {
months[2] += 1;
}

// 寻找d所在的月份
for (int i = 1; i <= 12; i++) {
if (d - months[i] <= 0) {
printf("%d\n%d\n", i, d);
break;
}
d -= months[i];
}
return 0;
}

----------本文结束感谢您的阅读----------
坚持原创技术分享,您的支持将鼓励我继续创作!