L1-016. 查验身份证-PAT团体程序设计天梯赛GPLT
一个合法的身份证号码由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相关推荐
- L2-005 集合相似度-PAT团体程序设计天梯赛GPLT
题目来源:团体程序设计天梯赛-练习集 题目地址:L2-005 集合相似度 题目大意 给定 nnn 个集合,然后有 kkk 次询问,每次询问都要求出 Nc/Nt×100%N_c / N_t \times ...
- L1-079 天梯赛的善良 (20 分)-PAT 团体程序设计天梯赛 GPLT
天梯赛是个善良的比赛.善良的命题组希望将题目难度控制在一个范围内,使得每个参赛的学生都有能做出来的题目,并且最厉害的学生也要非常努力才有可能得到高分. 于是命题组首先将编程能力划分成了 106个等级( ...
- L1-078 吉老师的回归 (15 分)-PAT 团体程序设计天梯赛 GPLT
曾经在天梯赛大杀四方的吉老师决定回归天梯赛赛场啦! 为了简化题目,我们不妨假设天梯赛的每道题目可以用一个不超过 500 的.只包括可打印符号的字符串描述出来,如:Problem A: Print &q ...
- [Python] L1-052 2018我们要赢-PAT团体程序设计天梯赛GPLT
2018年天梯赛的注册邀请码是"2018wmyy",意思就是"2018我们要赢".本题就请你用汉语拼音输出这句话. 输入格式: 本题没有输入. 输出格式: 在第 ...
- L1-052 2018我们要赢-PAT团体程序设计天梯赛GPLT
2018年天梯赛的注册邀请码是"2018wmyy",意思就是"2018我们要赢".本题就请你用汉语拼音输出这句话. 输入格式: 本题没有输入. 输出格式: 在第 ...
- L3-007. 天梯地图-PAT团体程序设计天梯赛GPLT
本题要求你实现一个天梯赛专属在线地图,队员输入自己学校所在地和赛场地点后,该地图应该推荐两条路线:一条是最快到达路线:一条是最短距离的路线.题目保证对任意的查询请求,地图上都至少存在一条可达路线. 输 ...
- C++:查验身份证(团体程序设计天梯赛)
题目概述: 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,1 ...
- L3-011 直捣黄龙 (30 分)-PAT 团体程序设计天梯赛 GPLT
本题是一部战争大片 -- 你需要从己方大本营出发,一路攻城略地杀到敌方大本营.首先时间就是生命,所以你必须选择合适的路径,以最快的速度占领敌方大本营.当这样的路径不唯一时,要求选择可以沿途解放最多城镇 ...
- [Python] L1-045 宇宙无敌大招呼-PAT团体程序设计天梯赛GPLT
据说所有程序员学习的第一个程序都是在屏幕上输出一句"Hello World",跟这个世界打个招呼.作为天梯赛中的程序员,你写的程序得高级一点,要能跟任意指定的星球打招呼. 输入格式 ...
最新文章
- vue打印props的值_vue中props传值方法
- python调用oracle的存储过程_python 调用 oracle 存储过程
- Angular2 组件通信
- ASP.NET Web Pages 的冲突版本问题
- URL(统一资源定位符)
- 搭建分布式hadoop2.x集群
- 解决安卓字体偏移:页面整体缩放
- js的 ajax获取后台数据,如何通过js来获取后台数据
- Module 让 Terraform 使用更简单
- macos下使用aria2_macOS下 ansible简单安装及基础使用
- (组合数学笔记)Pólya计数理论_Part.2_群及其性质
- poj1548Robots dfs实践
- labview与单片机正弦信号_LabVIEW小白入门——低通滤波器
- 使用Dotfuscator混淆winphone8应用XAP
- 帧中继网配置实例学习记录
- python 微信二次开发_python微信公众账号二次开发
- linux运行luminati,安装luminati的nodejs环境配置
- PAT 甲级 A1010 Radix (25 分)
- java大数据课程大纲(小牛学堂)
- js平滑滚动元素进入视图