湖南大学21夏训练四18.身份证校验
【问题描述】
我国国标〖GB 11643-1999〗中规定:公民身份号码是18位特征组合码,由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。其校验码(最后一位)计算方法和步骤为:
(1)十七位数字本体码加权求和公式
S = Sum(Ai * Wi), i = 0, … , 16 ,先对前17位数字的权求和
其中Ai:表示第i位置上的身份证号码数字值
Wi:表示第i位置上的加权因子,前17位加权因子从左到右分别为
Wi:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
(2)计算模
Y = mod(S, 11)
(3)通过模Y查下表得到对应的校验码
Y
0
1
2
3
4
5
6
7
8
9
10
校验码
1
0
X
9
8
7
6
5
4
3
2
例如:某身份证前17位为11010519491231002
i
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
wi
7
9
10
5
8
4
2
1
6
3
7
9
10
5
8
4
2
1
1
0
1
0
5
1
9
4
9
1
2
3
1
0
0
2
积
7
9
0
5
0
20
2
9
24
27
7
18
30
5
0
0
4
得到和为:167;则模为y=167%11=2
查(3)得校验码为X(大写)
请按上面所述步骤编程,输入一个二代身份证号,检查该身份证是否正确。
【输入形式】
输入若干行,每行一个身份证号码,最后一行输入-1
【输出形式】
输出1代表正确,0代表错误
【样例输入】
120223198902021249
130132199210293822
130402198207290622
-1
【样例输出】
1
1
0
#include<iostream>
#include<string>
#include<sstream>
using namespace std;
int main(){string str;stringstream ss;int a[18];while(cin>>str){if(str=="-1")break;for(int i=0;i<17;i++){//str的最后一位别输进去! ss.clear();ss<<str[i];ss>>a[i];}int sum=0;sum=a[0]*7+a[1]*9+a[2]*10+a[3]*5+a[4]*8+a[6]*2+a[7]+a[8]*6+a[5]*4+a[9]*3+a[10]*7+a[11]*9+a[12]*10+a[13]*5+a[14]*8+a[15]*4+a[16]*2;int res=sum%11;char ch;if(res==0)ch='1';else if(res==1)ch='0';else if(res==2)ch='X';else if(res==3)ch='9';else if(res==4)ch='8';else if(res==5)ch='7';else if(res==6)ch='6';else if(res==7)ch='5';else if(res==8)ch='4';else if(res==9)ch='3';else if(res==10)ch='2';if(ch==str[17])cout<<"1"<<endl;else cout<<"0"<<endl;}return 0;
}
湖南大学21夏训练四18.身份证校验相关推荐
- 湖南大学21夏训练四12.疫情期间
[问题描述] 正值新冠疫情期间,阿迪没法返回学校学习,他希望通过参加一些比赛来提高一下编程技能,同时做做运动.他收集了接下来的 n 天里每一天的信息,包括健身房是否开放,或者互联网上是否有程序设计竞赛 ...
- 湖南大学21夏训练四7.斯诺克台球
[问题描述] 斯诺克台球是一项古老而又时尚的运动,使用长方形球桌,台面四角以及两长边中心位置各有一个球袋,使用的球分为1个白球,15个红球和6个彩球共22个球. 其中母球(白球)1只,目标球21只.目 ...
- 湖南大学21夏训练四20.恺撒Caesar密码
[问题描述] Julius Caesar 生活在充满危险和阴谋的年代.为了生存,他首次发明了密码,用于军队的消息传递.假设你是Caesar 军团中的一名军官,需要把Caesar 发送的消息破译出来.并 ...
- 湖南大学21夏训练四6.数塔
[问题描述] 给定一个数塔,如下图所示.在此数塔中,从顶部出发,在每一节点可以选择走左下或右下,一直走到底层.请找出一条路径,使路径上的数值和最大. [输入形式] 输入时第一行一个整数n,表示该数塔的 ...
- 湖南大学21夏训练四2.最简单的计算机
[问题描述] 一个名叫是 PigHeadThree 的研究组织设计了一台实验用的计算机,命名为 PpMm.PpMm只能执行简单的六种命令 A,B,C,D,E,F:只有二个内存 M1,M2:三个寄存器 ...
- 湖南大学21夏训练三18.写出来吧
[问题描述] 读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字. [输入形式] 每个测试输入包含1个测试用例,即给出自然数n的值.这里保证n小于10的100次方. [输出形式] 在一 ...
- 湖南大学21夏训练四3.相同生日
[问题描述] 在一个有n个人的大班级中,存在两个人生日相同的概率非常大,现给出每个学生的学号,出生月日,试找出所有生日相同的学生. [输入形式] 第一行为整数n,表示有n个学生,n<=200.此 ...
- 湖南大学21夏训练四16.逆序数
问题描述 在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序.一个排列中逆序的总数就称为这个排列的逆序数.也就是说,对于n个不同的元素,先规定各元素之间有 ...
- 湖南大学21夏训练四9.相等的多项式
问题描述 小明现在在学习多项式的展开:就是把一个形如 (x+a1) (x+a2) - (x+an) 展开成如下形式: xn + b1xn-1 + b2xn-2 + - + bn-1x + bn 比如 ...
最新文章
- GitHub使用指南——建立仓库、建立文件夹、上传图片详细教程
- 【160天】尚学堂高琪Java300集视频精华笔记(129)
- 手撕设计模式之「简单工厂模式」(Java描述)
- Java初学者需掌握的4大核心基础知识
- 解决MAC系统升级导致COCOAPODS失效问题
- windows 通过批处理 修改环境变量
- SQL update 多表连接方法
- es6 Proxy.revocable()方法
- Android应用程序线程消息循环模型分析(5)
- Jmeter(二十三)稳定性测试后的波形图
- ubuntu搭建nfs网络文件系统
- pythonfind usage_Python实现简单Linux find命令
- mysql按逗号拼接起来_MySql逗号拼接字符串查询的两种方法
- AUTOCAD——设置颜色
- EINT DINT ERTM DRTM理解
- 魅族MX5 如何进入开发者模式
- perl各个符号代表的意思
- 怎么用计算机弹出光年之外,明日之后光年之外简谱代码-明日之后光年之外怎么弹-明日之后光年之外钢琴曲谱分享_牛游戏网...
- PL/SQL 创建定时任务
- 电脑最容易出现的各种故障问题,应该这样应对问题
热门文章
- mac版eclipse快捷键总结
- 虚拟机中Ubuntu的输入法问题
- java 获取法定节假日+周末+排除补班
- 解决执行go mod tidy时报错的问题:dial tcp: lookup xxx: no such host
- heic是什么格式?怎么转换成jpg或png?
- 利用python-opencv中solvepnp函数解决位姿定位定向问题。
- C语言 htons函数
- “女神”代言曙光服务器新品的背后
- Faster RCNN 中的RPN解析
- python多项式回归_Python | 多项式回归的实现