测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A7055. 日期平移

编程题 普及/提高-
知识点

题目描述

给定一个起始日期(年、月、日,采用公历),接下来有若干次操作:

- 操作 $1$:向后(未来)平移若干天
- 操作 $2$:向前(过去)平移若干天

请在按顺序依次执行所有操作后,输出最终的年月日。

输入格式

第一行:三个整数 Y M D(表示年、月、日)

第二行:一个整数 Q(操作次数)

接下来 Q 行:每行两个整数 op x

- op = 1 表示向后平移 x
- op = 2 表示向前平移 x
- x ≥ 0

输出格式

输出三个整数 Y M D,表示所有操作执行完毕后的日期。

输入输出样例

输入 #1
2020 2 28
1
1 1
输出 #1
2020 2 29
输入 #2
9999 2 28
5
1 1
1 1
2 60
1 365
2 305
输出 #2
9999 3 2
输入 #3
7777 3 1
5
2 1
1 365
2 366
1 730
2 732
输出 #3
7777 2 25

说明/提示

$0\le Q\le 10^5,x\ge 0$

保证初始日期合法,且**在每一步操作后以及最终结果**都合法并且年份仍在 $[1, 10^5]$ 范围内。



使用**公历**的闰年判定规则:

- 能被 $400$ 整除的年份是闰年;
- 能被 $4$ 整除但不能被 $100$ 整除的年份是闰年;
- 其余为平年。
上一题 去做题 下一题