一个合法的身份证号码由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

分析:isTrue函数判断身份证号是否正常,如果不正常返回false,判断每一个给出的身份证号,如果不正常,就输出这个身份证号,并且置flag=1表示有不正常的号码,如果所有的号码都是正常,即flag依旧等于0,则输出All passed~在isTrue函数中,先判断前17位是否是数字,如果不是,直接return false,如果是,就将当前字符转化为数字并与a[i]相乘,累加在sum中,对于第18位,如果是X要转化为10~比较b[sum%11]和第18位是否相等,如果相等就返回true,不相等就返回false~

#include <iostream>
using namespace std;
int a[17] = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
int b[11] = {1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2};
string s;
bool isTrue() {int sum = 0;for (int i = 0; i < 17; i++) {if (s[i] < '0' || s[i] > '9') return false;sum += (s[i] - '0') * a[i];}int temp = (s[17] == 'X') ? 10 : (s[17] - '0');return b[sum%11] == temp;
}
int main() {int n, flag = 0;cin >> n;for (int i = 0; i < n; i++) {cin >> s;if (!isTrue()) {cout << s << endl;flag = 1;}}if (flag == 0) cout << "All passed";return 0;
}

L1-016. 查验身份证-PAT团体程序设计天梯赛GPLT相关推荐

  1. L2-005 集合相似度-PAT团体程序设计天梯赛GPLT

    题目来源:团体程序设计天梯赛-练习集 题目地址:L2-005 集合相似度 题目大意 给定 nnn 个集合,然后有 kkk 次询问,每次询问都要求出 Nc/Nt×100%N_c / N_t \times ...

  2. L1-079 天梯赛的善良 (20 分)-PAT 团体程序设计天梯赛 GPLT

    天梯赛是个善良的比赛.善良的命题组希望将题目难度控制在一个范围内,使得每个参赛的学生都有能做出来的题目,并且最厉害的学生也要非常努力才有可能得到高分. 于是命题组首先将编程能力划分成了 106个等级( ...

  3. L1-078 吉老师的回归 (15 分)-PAT 团体程序设计天梯赛 GPLT

    曾经在天梯赛大杀四方的吉老师决定回归天梯赛赛场啦! 为了简化题目,我们不妨假设天梯赛的每道题目可以用一个不超过 500 的.只包括可打印符号的字符串描述出来,如:Problem A: Print &q ...

  4. [Python] L1-052 2018我们要赢-PAT团体程序设计天梯赛GPLT

    2018年天梯赛的注册邀请码是"2018wmyy",意思就是"2018我们要赢".本题就请你用汉语拼音输出这句话. 输入格式: 本题没有输入. 输出格式: 在第 ...

  5. L1-052 2018我们要赢-PAT团体程序设计天梯赛GPLT

    2018年天梯赛的注册邀请码是"2018wmyy",意思就是"2018我们要赢".本题就请你用汉语拼音输出这句话. 输入格式: 本题没有输入. 输出格式: 在第 ...

  6. L3-007. 天梯地图-PAT团体程序设计天梯赛GPLT

    本题要求你实现一个天梯赛专属在线地图,队员输入自己学校所在地和赛场地点后,该地图应该推荐两条路线:一条是最快到达路线:一条是最短距离的路线.题目保证对任意的查询请求,地图上都至少存在一条可达路线. 输 ...

  7. C++:查验身份证(团体程序设计天梯赛)

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

  8. L3-011 直捣黄龙 (30 分)-PAT 团体程序设计天梯赛 GPLT

    本题是一部战争大片 -- 你需要从己方大本营出发,一路攻城略地杀到敌方大本营.首先时间就是生命,所以你必须选择合适的路径,以最快的速度占领敌方大本营.当这样的路径不唯一时,要求选择可以沿途解放最多城镇 ...

  9. [Python] L1-045 宇宙无敌大招呼-PAT团体程序设计天梯赛GPLT

    据说所有程序员学习的第一个程序都是在屏幕上输出一句"Hello World",跟这个世界打个招呼.作为天梯赛中的程序员,你写的程序得高级一点,要能跟任意指定的星球打招呼. 输入格式 ...

最新文章

  1. vue打印props的值_vue中props传值方法
  2. python调用oracle的存储过程_python 调用 oracle 存储过程
  3. Angular2 组件通信
  4. ASP.NET Web Pages 的冲突版本问题
  5. URL(统一资源定位符)
  6. 搭建分布式hadoop2.x集群
  7. 解决安卓字体偏移:页面整体缩放
  8. js的 ajax获取后台数据,如何通过js来获取后台数据
  9. Module 让 Terraform 使用更简单
  10. macos下使用aria2_macOS下 ansible简单安装及基础使用
  11. (组合数学笔记)Pólya计数理论_Part.2_群及其性质
  12. poj1548Robots dfs实践
  13. labview与单片机正弦信号_LabVIEW小白入门——低通滤波器
  14. 使用Dotfuscator混淆winphone8应用XAP
  15. 帧中继网配置实例学习记录
  16. python 微信二次开发_python微信公众账号二次开发
  17. linux运行luminati,安装luminati的nodejs环境配置
  18. PAT 甲级 A1010 Radix (25 分)
  19. java大数据课程大纲(小牛学堂)
  20. js平滑滚动元素进入视图

热门文章

  1. C++内存和进程,线程学习补充(内存泄漏,信号量)
  2. Android 4.0 ICS SystemUI浅析——StatusBar加载流程分析
  3. jsp在ie6中css的margin属性失效问题
  4. 自动驾驶初创公司Nuro获软银9.4亿美元投资
  5. Java多线程 5 多线程其他知识简要介绍
  6. 什么是https,和ssl什么关系,为什么用https
  7. PSU更新之后是否更改数据库版本号呢
  8. WebSphere中连接池的配置
  9. 三次元的世界里,机械臂的手活儿也无敌了
  10. SpringBoot之RabbitMQ的使用