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
代码长度限制                                                                   16 KB
时间限制                                                                        400 ms
内存限制                                                                        64 MB

题解:

小型模拟,根据题意照做就行。

代码:

#include <bits/stdc++.h>
using namespace std;int main() {int n, sum, cnt = 0, w[17] = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};string s, m = "10X98765432";bool flag;cin >> n;for (int i = 0; i < n; i++) {cin >> s;sum = 0;flag = true;for (int j = 0; j < 17; j++) {if (!(s[j] >= '0' && s[j] <= '9')) {flag = false;break;} sum += w[j] * (s[j] - '0');}if (!(flag && (s[17] == m[sum % 11]))) cout << s << endl;else cnt++;}if (cnt == n) cout << "All passed";return 0;
}

[L1 - 15分合集]查验身份证相关推荐

  1. [L1 - 15分合集]吉老师的回归

    L1-078 吉老师的回归 分数 15 作者 陈越 单位 浙江大学 题目: 曾经在天梯赛大杀四方的吉老师决定回归天梯赛赛场啦! 为了简化题目,我们不妨假设天梯赛的每道题目可以用一个不超过 500 的. ...

  2. [L1 - 10分合集]奇偶分家

    L1-022 奇偶分家 分数 10 作者 陈越 单位 浙江大学 题目: 给定N个正整数,请统计奇数和偶数各有多少个? 输入格式: 输入第一行给出一个正整N(≤1000):第2行给出N个非负整数,以空格 ...

  3. [L1 - 10分合集]大笨钟

    L1-018 大笨钟 分数 10 作者 陈越 单位 浙江大学 题目: 微博上有个自称"大笨钟V"的家伙,每天敲钟催促码农们爱惜身体早点睡觉.不过由于笨钟自己作息也不是很规律,所以敲 ...

  4. [L1 - 5分合集]种钻石

    L1-082 种钻石 分数 5 作者 陈越 单位 浙江大学 题目: 2019年10月29日,中央电视台专题报道,中国科学院在培育钻石领域,取得科技突破.科学家们用金刚石的籽晶片作为种子,利用甲烷气体在 ...

  5. [L1 - 5分合集]后天

    L1-024 后天 分数 5 作者 陈越 单位 浙江大学 题目: 如果今天是星期三,后天就是星期五:如果今天是星期六,后天就是星期一.我们用数字1到7对应星期一到星期日.给定某一天,请你输出那天的&q ...

  6. [L1 - 5分合集]PTA使我精神焕发

    L1-057 PTA使我精神焕发 分数 5 作者 陈越 单位 浙江大学 题目: 以上是湖北经济学院同学的大作.本题就请你用汉语拼音输出这句话. 输入格式: 本题没有输入. 输出格式: 在一行中按照样例 ...

  7. 团队程序设计天梯赛考点内容总结(15分以上题)

    L1: L1-002 打印沙漏 (20 分) 字符模拟 L1-003 个位数统计 (15 分) 字符模拟 L1-005 考试座位号 (15 分) 模拟 L1-006 连续因子 (20 分) 数学因数分 ...

  8. 7-21 查验身份证 (15 分)

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

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

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

最新文章

  1. mysql中char与varchar的区别分析(补充一句,int和integer没区别)
  2. UC伯克利新机器人成果:灵活自由地使用工具
  3. How to Build Your Own Blockchain Part 4.1 — Bitcoin Proof of Work Difficulty Explained
  4. alm数据库mysql_mysql
  5. 手册中数组最后一个元素的 $value 引用在 foreach 循环之后仍会保留的理解
  6. Spring框架帮助文档目录
  7. Git小乌龟汉化步骤
  8. WOMic 使用wifi 将手机作为电脑麦克风音频输入
  9. win10系统word2016出现错误 “429 ActiveX部件不能创建对象”
  10. 一人一猫旅行记之浅析单例模式
  11. kmplayer android官方下载,KMPlayer下载
  12. 裸机服务器装系统步骤,组装裸机如何装系统?
  13. CCF: 201409-1-相邻数对(C++)
  14. C++生日聚会(BFS)
  15. 实在人做实干型产品——专访凯特伟业CEO云凤程
  16. Tomcat日志记录post请求参数
  17. python英汉字典,Python基于有道实现英汉字典功能,python英汉字典
  18. 高通打开wifi驱动的log
  19. Pytorch教程入门系列3
  20. 高光谱解混:基于几何,统计,稀疏回归的方法概述

热门文章

  1. JAVA平台及其开发环境
  2. C++小游戏(第一弹)
  3. PADS(3)——PADS页面连接符制作与更新
  4. RHEL7安装NFS服务
  5. 前端框架Aurelia —— 路由Router
  6. 【案例】用Jmeter做微信小程序项目接口测试
  7. 【SA8295P 源码分析】44 - 如何替换 NON-HLOS.bin 中的 Wifi Firmware 固件
  8. 《乐高EV3机器人搭建与编程》——2.4 坦克履带
  9. HDU 3047 Zjnu Stadium
  10. 自动化Web邮箱: Gmail、Hotmail和Yahoo Mail