#Z01756. 小郭学长的普通身份证 Warning:劝退警告
小郭学长的普通身份证 Warning:劝退警告
题目描述
身份证有以下要求: 1.前1、2位数字表示:所在省份的代码; 2.第3、4位数字表示:所在城市的代码; 3.第5、6位数字表示:所在区县的代码; 4.第7~14位数字表示:出生年、月、日; 5.第15、16位数字表示:所在地的派出所的代码; 6.第17位数字表示性别:奇数表示男性,偶数表示女性; 第18位数字是校检码
我们要考虑的有
#首先你得确定是不是18位数据,其次,前面17位不可能出现字母 最后一位除了大写的X都是错的。中间不应该出现空格的情况。
1.省份代码是否合规(你不可能是外星来的吧)
11 : 北京 12 : 天津 13 : 河北 14 : 山西 15 : 内蒙古 21 : 辽宁 22 : 吉林 23 : 黑龙江 31 : 上海 32 : 江苏 33 : 浙江 34 : 安徽 35 : 福建 36 : 江西 37 : 山东 41 : 河南 42 : 湖北 43 : 湖南 44 : 广东 45 : 广西 46 : 海南 50 : 重庆 51 : 四川 52 : 贵州 53 : 云南 54 : 西藏 61 : 陕西 62 : 甘肃 63 : 青海 64 : 宁夏 65 : 新疆 71 : 台湾 81 : 香港 82 : 澳门 91 : 国外
小郭学长很贴心的为你们准备了对应的表:
'11', '12', '13', '14', '15', '21','22', '23', '31', '32', '33', '34', '35', '36', '37', '41', '42', '43', '44', '45', '46', '50', '51', '52', '53', '54', '61', '62','63', '64', '65', '71', '81', '82', '91'
'BeiJing','TianJing','HeBei','ShanXi','NeiMengGu','LiaoNing','JiLing','HeiLongJiang','ShangHai','JiangSu', 'ZheJiang','AnHui','FuJian','JiangXi','ShanDong','HeNan','HuBei','HuNan','GuangDong', 'GuangXi','HaiNan','ChongQing','SiChuan','GuiZhou','YunNan','XiZang','ShanXi','GanSu','QingHai', 'NingXia','XingJiang','TaiWan','XiangGang','AoMen','GuoWai'
2.我们这里就不考虑城市和区县了(嘤嘤嘤) 3.出生年月日必须是合法的,考虑0001-9999范围,注意闰年的判断(你可以用if或者正则) 闰年:能被400整除或者能被4整除但不被100整除的年份 正则表达提示: 月份和日期(平年): ((((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01])))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8]))) 年份(0001-9999): (([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1})|([0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})) 闰年年份: (([0-9]{2})(0[48]|[2468][048]|[13579][26])|(0[48]|[2468][048]|[3579][26])00)
4.派出所代码略过(嘤嘤嘤) 5.第17位数字奇数表示男性,偶数表示女性; 6.最后一位是校验码,是根据前面十七位数字码,按照一定规则计算出来的检验码。
计算规则如下:
1、将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为: 7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2 2、将这17位数字和系数相乘的结果相加; 3、用加出来和除以11,看余数是多少; 4、余数只可能有0 1 2 3 4 5 6 7 8 9 10这11个数字。其分别对应的最后一位身份证的号码为 '1','0','X','9','8','7','6','5','4','3','2' 5、通过上面得知如果余数是2,就会在身份证的第18位数字上出现罗马数字的X。如果余数是10,身份证的最后一位号码就是2;
输入格式
每一行一个字符串,不会超过30个,行尾没有空格,但行首和中间不保证没有空格 假设正确的身份证年份处于0001-9999之间
输出格式
对输入的每一行代码判断,只要有1条性质无法满足,就会输出“NO” 如果正确,依次输出"YES"和省份简写,中间以空格隔开
362523200005267217
36252320000526721X
62292319820608261X
431125198808282056
4 1125198808282056
4X1125198808282056
YES JiangXi
NO
YES GanSu
YES HuNan
NO
NO
提示
出题人:Dash_Guo 郭程 计算1801
豫公网安备41072702000346号