小明特别想知道自己身份证号码的秘密,那我就告诉你吧!
公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码,可以用字母表示为: ABCDEFYYYYMMDDXXXR。
1.地址码ABCDEF。表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按GB/T2260标准的规定执行。
2.出生日期码YYYYMMDD。表示编码对象出生的年、月、日,按GB/T7408标准的规定执行,年、月、日代码之间不用分隔符。
3.顺序码XXX。表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。
4.校验码R。根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2标准校验码计算出来的检验码。
18位身份证号码的编排规则:
(1)前1、2位数字表示:所在省份的代码;
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:"新疆"
81:"香港",82:"澳门",83:"台湾地区
91:"国外"
(2)第3、4位数字表示:所在城市的代码;
(3)第5、6位数字表示:所在区县的代码;
(4)第7~14位数字表示:出生年、月、日;
(5)第15、16位数字表示:所在地的派出所的代码;
(6)第17位数字表示性别:奇数表示男性,偶数表示女性;
(7)第18位数字是校检码:是由计算产生的,用来检验身份证的正确性。校检码可以是0~9的数字,有时也用x表示。
第十八位数字的计算方法为:
(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位数字上出现罗马数字的Ⅹ。如果余数是10,身份证的最后一位号码就是2。
例如:某男性的身份证号码是34052419800101001X。我们要看看这个身份证是不是合法的身份证。
首先:我们得出,前17位数字与相应系数的乘积和是189。
然后:用189除以11得出的结果是17余2,也就是说余数是2。
最后:通过对应规则就可以知道余数2对应的数字是x。所以,这是一个合格的身份证号码。
现在,于老师给你一个身份证号,你能知道它是不是一个合法的号码?如果是合法的你知道这个号码是男是女吗?
输入格式:
一个18位的身份证号码,保证输入的数据中没有非法字符,即前17位是数字,第18位可能为数字或x或X。
输出格式:
合法号码根据性别输出:Yes male或者Yes female
不合法的号码输出:No 不合法原因
不合法原因 依次为:
ShengFenDaiMa:XX //省份代码不合法,再输出错误的代码XX
ChuShengRiQi:YYYYMMDD //出生日期不是合法日期,再输出错误的日期YYYYMMDD
JiaoYanHaoMa:E(R is right) //第18位校验代码错误,再输出错误码E和正确码R
不合法的号码只需要按以上顺序输出第一个不合法原因就可以。
注意输出样例的样式和格式。
输入样例1:
991234123456780001
输出样例1:
No ShengFenDaiMa:99



