一个合法的身份证号码由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 分)相关推荐

  1. PTA第3章-2 查验身份证 (15 分)

    第3章-2 查验身份证 (15 分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4, ...

  2. C++学习之路 | PTA乙级—— 1031 查验身份证 (15 分)(精简)

    1031 查验身份证 (15 分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2 ...

  3. 7-54 查验身份证 (15 分)

    7-54 查验身份证 (15 分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2 ...

  4. PAT乙级 1031 查验身份证 (15 分)

    1031 查验身份证 (15 分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2 ...

  5. 【2020模拟考试T1】【PAT乙】1031 查验身份证 (15分)模拟

    problem 1031 查验身份证 (15分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10, ...

  6. 查验身份证(15分)

    查验身份证 (15分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3 ...

  7. L1-016 查验身份证 (15 分)[JAVA]

    L1-016 查验身份证 (15 分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4 ...

  8. 查验身份证 (15 分)一个合法的身份证号码

    查验身份证 (15 分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6, ...

  9. PAT 乙级 1031 查验身份证 (15分)

    1031 查验身份证 (15分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2, ...

  10. L1-016 查验身份证 (15 分)

    L1-016 查验身份证 (15 分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4 ...

最新文章

  1. Linux中sysstat服务,Linux 性能优化工具包 sysstat 以及 sysstat 服务
  2. 点击表格获取列索引的方法
  3. 【CV】图像分割2020,架构,损失函数,数据集,框架的整理和总结
  4. 因变量 方差膨胀系数_请问如何计算潜变量的方差膨胀因子(VIF)?
  5. Golang实践录:使用gin框架实现转发功能:上传文件并转
  6. 无人驾驶的规划与控制(一)——路由寻径
  7. 深圳罗湖区:拟重点发展区块链金融技术 推动数字人民币国际合作
  8. springboot Hello World探究
  9. Asp.net MVC权限设计思考 (二)逻辑部分实现
  10. html中加hover啥意思,css行内样式hover 内联css怎么使用hover效果
  11. 一个局域网联机小游戏
  12. ipv4和计算机地址是什么意思,什么是IP地址?IPV4和IPV6又有什么区别?
  13. html谷歌浏览器实现自动播报语音,vue中解决chrome浏览器自动播放音频 和MP3语音打包到线上...
  14. 亚信安全助手、杀毒软件卸载
  15. 虚拟服务器 emule,emule服务器
  16. 台式计算机中经常使用的硬盘多是多少英寸,笔记本硬盘和台式机硬盘有什么不同...
  17. 基于51单片机的智能加湿控制器设计
  18. UPC10544: 凉宫春日的叹息
  19. Google Pixel 2 相机测试
  20. vtx文件有什么用_VTX文件扩展名 - 什么是.vtx以及如何打开? - ReviverSoft

热门文章

  1. 是的,我们真的在遭遇有史以来最大的DDoS攻击,并且还在加剧
  2. Active Diretory 全攻略(一)--目录服务
  3. 人生值得珍藏的80句话
  4. 【相机标定系列】0415 图像缩放之后相机内参变化,调整图像大小如何影响固有相机矩阵?
  5. Linux bash介绍
  6. MySQL架构体系(从一条语句出发了解MySQL各部分的作用)
  7. Java的static关键字使用
  8. ubuntu文件系统知识
  9. Spark streaming消费Kafka的正确姿势
  10. decaNLP-一个可以同时处理机器翻译、问答、摘要、文本分类、情感分析等十项自然语言任务的通用模型