L1-016 查验身份证(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

#include<iostream>
#include<set>
#include<cstring>
using namespace std;
bool check(string s);
int main()
{int n;int flag=0;string s;cin>>n;while(n--){cin>>s;if(check(s))flag++;}if(flag==0)cout<<"All passed";return 0;
}
bool check(string s)
{int sum=0,z;int a[18];int b[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};for(int i=0;i<17;i++){if(!isdigit(s[i])){cout<<s<<endl;return false;}a[i]=s[i]-'0';}if(s[17]=='X')a[17]=10;elsea[17]=s[17]-'0';for(int i=0;i<17;i++){sum+=a[i]*b[i];}z=sum%11;int c[11]={1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2} ;if(c[z]!=a[17]){for(int i=0;i<17;i++){cout<<s[i];}if(a[17]!=10)cout<<a[17]<<endl;elsecout<<"X"<<endl;return true;}elsereturn false;
}

L1-016 查验身份证(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. 源码-0205-02--聊天布局
  2. 使用VC++6.0创建MFC对话框程序
  3. JVM 垃圾回收器工作原理及使用实例介绍
  4. 安卓gridview 网格,多行多列实现
  5. JavaScript中的执行环境
  6. 记录下openstack部署和使用时遇到的一些问题
  7. 【spring boot】 使用 RestTemplate
  8. 我的MVC之旅(3)--------MVC Music Store 第三篇 Views and ViewModels [翻译]
  9. Java_Web--JDBC 增加记录操作模板
  10. ci mysql高并发_高并发访问mysql时的问题(一):库存超减
  11. 深度区分LoRa和LoRaWAN的区别
  12. LeetCode 148. 排序链表(归并排序、快速排序)
  13. 编码5分钟,命名2小时?Java开发都需要参考的一份命名规范!
  14. sql server 关联_SQL Server中的关联规则挖掘
  15. java类 权限修饰词_java-学习笔记-访问权限修饰词一
  16. 在钢筋混泥土的城市,打铁还需身体硬
  17. CAD/CASS断面插件合集断面工具箱批量提取断面数据绘制断面图(断面必备)
  18. PowerDesigner将PDM导出生成WORD文档(rtf文档)
  19. 原生拦截WebView页面下载链接跳转空白页问题
  20. 利用NEO与Unity制作游戏(第2部分)

热门文章

  1. iPhone,iPad横屏竖屏的判断
  2. 在线就能用!10个帮你修图+剪辑视频+PPT制作的网站
  3. 笔记-基于Lie群SE(3)的航天器姿轨一体化建模方法
  4. AVPlayer播放视频(本地视频,或网络视频)
  5. 如何查找计算机操作系统序列号,如何从安装光盘找出操作系统的序列号?
  6. VirtualBox安装Centos
  7. GPS接收机总体设计——数据写入、捕获、跟踪、定位解算
  8. LDF转Excel;LDF转位定义;Excel转LDF;Excel转位定义;MatrixCreat(二)之LDF文件创建
  9. PMP认证考试报考流程
  10. 用大数据“填志愿”靠谱吗?专家:仅供参考不能依赖