2275. 身份证号码
1000ms
256MB
简单
字符串
题目描述
我国公民身份号码由 18 位字符组成。其中第 7 位到第 14 位数字代表出生日期(格式为 `YYYYMMDD`)。
请编写程序,提取身份证号中的出生日期并验证其合法性。
- **合法性标准**:年份、月份(1-12)、日期(需结合年份和月份判断平闰年及大、小月)均需真实有效。
输入格式
一行,包含一个 18 位的字符串。
输出格式
- 若日期不合法,输出 `error`。
- 若日期合法,输出三个整数,分别代表年、月、日,中间用空格隔开。
样例 1
输入 (Input)
101001199801050158
输出 (Output)
1998 1 5
样例 2
输入 (Input)
101001200102290158
输出 (Output)
error
- **闰年判断条件**:年份能被 4 整除但不能被 100 整除,或者能被 400 整除。
- **日期提取**:可以使用字符串截取函数(如 C++ 的 `substr`)提取第 7 到 14 位,并将其转换为整数进行判断。
- **月份天数参考**:
- 1, 3, 5, 7, 8, 10, 12 月:31 天
- 4, 6, 9, 11 月:30 天
- 2 月:平年 28 天,闰年 29 天
› 输入 stdin
CtrlShiftEnter
‹ 输出 stdout
错误 stderr
操作成功