7-31 查验身份证 (15 分)
一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下:
首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2}
;然后将计算的和对11取模得到值Z;最后按照以下关系对应Z值与校验码M的值:
Z:0 1 2 3 4 5 6 7 8 9 10
M:1 0 X 9 8 7 6 5 4 3 2
现在给定一些身份证号码,请你验证校验码的有效性,并输出有问题的号码。
输入格式:
输入第一行给出正整数N(≤100)是输入的身份证号码的个数。随后N行,每行给出1个18位身份证号码。
输出格式:
按照输入的顺序每行输出1个有问题的身份证号码。这里并不检验前17位是否合理,只检查前17位是否全为数字且最后1位校验码计算准确。如果所有号码都正常,则输出All passed。
输入样例1:
4
320124198808240056
12010X198901011234
110108196711301866
37070419881216001X
输出样例1:
12010X198901011234
110108196711301866
37070419881216001X
输入样例2:
2
320124198808240056
110108196711301862
输出样例2:
All passed
要点: 使用to_string()函数能将int类型转化为字符串类型。
#include<iostream>
#include<algorithm>
#include<map>
using namespace std;string st[105];
map<string,char> m;bool test(string s);
int w[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
int main(){m["0"]='1';m["1"]='0';m["2"]='X';m["3"]='9';m["4"]='8';m["5"]='7';m["6"]='6';m["7"]='5';m["8"]='4';m["9"]='3';m["10"]='2';int n;cin >> n;for(int i = 0; i < n; i++){cin >> st[i];}bool flag = true;for(int i = 0; i < n; i++){string s = st[i];if(test(s) == false){cout << s << endl;flag = false;}}if(flag){cout << "All passed";}return 0;
}
bool test(string s){bool flag = true;int sum = 0;for(int i = 0; i < 17; i++){sum += w[i]*(s[i]-'0');} string index = to_string(sum % 11);if(m[index] != s[17]){flag = false;}return flag;
}
7-31 查验身份证 (15 分)相关推荐
- PTA第3章-2 查验身份证 (15 分)
第3章-2 查验身份证 (15 分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4, ...
- C++学习之路 | PTA乙级—— 1031 查验身份证 (15 分)(精简)
1031 查验身份证 (15 分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2 ...
- 7-54 查验身份证 (15 分)
7-54 查验身份证 (15 分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2 ...
- PAT乙级 1031 查验身份证 (15 分)
1031 查验身份证 (15 分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2 ...
- 【2020模拟考试T1】【PAT乙】1031 查验身份证 (15分)模拟
problem 1031 查验身份证 (15分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10, ...
- 查验身份证(15分)
查验身份证 (15分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3 ...
- L1-016 查验身份证 (15 分)[JAVA]
L1-016 查验身份证 (15 分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4 ...
- 查验身份证 (15 分)一个合法的身份证号码
查验身份证 (15 分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6, ...
- PAT 乙级 1031 查验身份证 (15分)
1031 查验身份证 (15分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2, ...
- L1-016 查验身份证 (15 分)
L1-016 查验身份证 (15 分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4 ...
最新文章
- Linux中sysstat服务,Linux 性能优化工具包 sysstat 以及 sysstat 服务
- 点击表格获取列索引的方法
- 【CV】图像分割2020,架构,损失函数,数据集,框架的整理和总结
- 因变量 方差膨胀系数_请问如何计算潜变量的方差膨胀因子(VIF)?
- Golang实践录:使用gin框架实现转发功能:上传文件并转
- 无人驾驶的规划与控制(一)——路由寻径
- 深圳罗湖区:拟重点发展区块链金融技术 推动数字人民币国际合作
- springboot Hello World探究
- Asp.net MVC权限设计思考 (二)逻辑部分实现
- html中加hover啥意思,css行内样式hover 内联css怎么使用hover效果
- 一个局域网联机小游戏
- ipv4和计算机地址是什么意思,什么是IP地址?IPV4和IPV6又有什么区别?
- html谷歌浏览器实现自动播报语音,vue中解决chrome浏览器自动播放音频 和MP3语音打包到线上...
- 亚信安全助手、杀毒软件卸载
- 虚拟服务器 emule,emule服务器
- 台式计算机中经常使用的硬盘多是多少英寸,笔记本硬盘和台式机硬盘有什么不同...
- 基于51单片机的智能加湿控制器设计
- UPC10544: 凉宫春日的叹息
- Google Pixel 2 相机测试
- vtx文件有什么用_VTX文件扩展名 - 什么是.vtx以及如何打开? - ReviverSoft