L1-016 查验身份证(15 分)
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 分)相关推荐
- 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 ...
最新文章
- 源码-0205-02--聊天布局
- 使用VC++6.0创建MFC对话框程序
- JVM 垃圾回收器工作原理及使用实例介绍
- 安卓gridview 网格,多行多列实现
- JavaScript中的执行环境
- 记录下openstack部署和使用时遇到的一些问题
- 【spring boot】 使用 RestTemplate
- 我的MVC之旅(3)--------MVC Music Store 第三篇 Views and ViewModels [翻译]
- Java_Web--JDBC 增加记录操作模板
- ci mysql高并发_高并发访问mysql时的问题(一):库存超减
- 深度区分LoRa和LoRaWAN的区别
- LeetCode 148. 排序链表(归并排序、快速排序)
- 编码5分钟,命名2小时?Java开发都需要参考的一份命名规范!
- sql server 关联_SQL Server中的关联规则挖掘
- java类 权限修饰词_java-学习笔记-访问权限修饰词一
- 在钢筋混泥土的城市,打铁还需身体硬
- CAD/CASS断面插件合集断面工具箱批量提取断面数据绘制断面图(断面必备)
- PowerDesigner将PDM导出生成WORD文档(rtf文档)
- 原生拦截WebView页面下载链接跳转空白页问题
- 利用NEO与Unity制作游戏(第2部分)
热门文章
- iPhone,iPad横屏竖屏的判断
- 在线就能用!10个帮你修图+剪辑视频+PPT制作的网站
- 笔记-基于Lie群SE(3)的航天器姿轨一体化建模方法
- AVPlayer播放视频(本地视频,或网络视频)
- 如何查找计算机操作系统序列号,如何从安装光盘找出操作系统的序列号?
- VirtualBox安装Centos
- GPS接收机总体设计——数据写入、捕获、跟踪、定位解算
- LDF转Excel;LDF转位定义;Excel转LDF;Excel转位定义;MatrixCreat(二)之LDF文件创建
- PMP认证考试报考流程
- 用大数据“填志愿”靠谱吗?专家:仅供参考不能依赖