#G3007. 身份证信息
身份证信息
题目描述
新学期开学,班主任要从全班同学的身份证号里整理出每个人的生日和性别。
身份证号共 位,从左往右数(第 位是最左边那一位):
- 第 位是出生日期,格式为
yyyymmdd,例如19900307表示 年 月 日; - 第 位是一个数字,奇数表示男性,偶数表示女性;
- 第 位是校验码,可能是数字
0~9,也可能是大写字母X。本题不需要用到它。
请你对每个身份证号输出出生日期(格式 yyyy-mm-dd)和性别(男性输出 male,女性输出 female),最后输出年龄最大(出生日期最早)的同学是第几个。如果有几位同学出生日期相同且都是最早的,输出其中编号最小的。
输入格式
第一行一个整数 ,表示同学人数。
接下来 行,每行一个 位的身份证号。
输出格式
前 行,第 行输出第 位同学的出生日期和性别,中间用一个空格隔开。
第 行输出一个整数,表示年龄最大的同学的编号(编号从 开始)。
样例 #1
样例输入 #1
5
990105199003071234
99012220070923002X
990303198512310515
990102200102280046
99010719850505473X
样例输出 #1
1990-03-07 male
2007-09-23 female
1985-12-31 male
2001-02-28 female
1985-05-05 male
5
样例解释
以第 个号码 990105199003071234 为例:第 位是 19900307,第 位是 3,是奇数,所以输出 1990-03-07 male。
第 位和第 位同学都是 年出生,第 位是 月 日、比第 位的 月 日更早,所以年龄最大的是第 位。
(本题所有号码均为虚构,前两位 99 不对应任何真实地区。)
提示
数据范围
- 对于 的数据:身份证号的第 位都不是
X; - 对于 的数据:,每个号码都是 位,前 位都是数字,出生日期都是真实存在的日期。
提示
s.substr(i, len)取出字符串s从下标i开始、长度为len的一段。注意 C++ 字符串的下标从 开始,题目里的「第 位」对应下标 。- 两个长度相同、只由数字组成的字符串,用
<比较的结果和把它们当作整数比较的结果是一样的。