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 → stdout
输入 stdin
CtrlShiftEnter
输出 stdout

                
错误 stderr

                
CtrlEnter提交
自动保存已开启
操作成功
wzs_oj@kernel:~ — wzs-sh
guest@wzsoj:~$
刷新页面 F5
复制 Ctrl+C
粘贴 Ctrl+V
搜索题目
站点公告
今日神谕
CSP 倒计时
排行榜
我的提交
Esc 关闭 Enter 跳转 支持模糊匹配数字