L1-016 查验身份证

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 <string>
using namespace std;
bool func(string a);
int main() {int n;int count = 0;cin >> n;for (int i = 0; i < n; i++) {string a;cin >> a;if (func(a))count++;}if (count == 0)cout << "All passed";return 0;
}bool func(string s) {int sum = 0;int a[18];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';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++) {sum = sum + a[i] * b[i];}sum = sum % 11;int c[11] = {1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2};if (c[sum] != a[17]) {for (int i = 0; i < 17; i++) {cout << s[i];}if (a[17] != 10)cout << a[17] << endl;else {cout << "X" << endl;}return true;}else {return false;}
}

 

转载于:https://www.cnblogs.com/Frances-CY-FKYM/p/10293543.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/249785.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是高并发,如何避免高并发

之前我将高并发的解决方法误认为是线程或者是队列可以解决&#xff0c;因为高并发的时候是有很多用户在访问&#xff0c;导致出现系统数据不正确、丢失数据现象&#xff0c;所以想到 的是用队列解决&#xff0c;其实队列解决的方式也可以处理&#xff0c;比如我们在竞拍商品、转…

.sync 修饰符的理解

正常 子组件&#xff1a; this.$emit(update:title, newTitle)父组件&#xff1a; <text-documentv-bind:title"doc.title"v-on:update:title"doc.title $event" ></text-document>简洁&#xff1a; <text-document v-bind:title.sync&quo…

L1-025 正整数A+B

题的目标很简单&#xff0c;就是求两个正整数A和B的和&#xff0c;其中A和B都在区间[1,1000]。稍微有点麻烦的是&#xff0c;输入并不保证是两个正整数。 输入格式&#xff1a; 输入在一行给出A和B&#xff0c;其间以空格分开。问题是A和B不一定是满足要求的正整数&#xff0c;…

到底多大才算高并发?

一、什么是高并发 定义&#xff1a; 高并发(High Concurrency)是使用技术手段使系统可以并行处理很多请求。关键指标&#xff1a; -响应时间(Response Time) -吞吐量(Throughput) -每秒查询率QPS(Query Per Second) -每秒事务处理量TPS(Transaction Per Second) -同时在…

eclipse安装maven插件

1、在线安装插件 a.打开eclipse&#xff0c;菜单“Help”-“Install New Software...” b.在Work with 地址栏输入&#xff1a;http://download.eclipse.org/releases/对应eclipse版本名称 c.在filter框中输入maven d.选择“Collaboration”-“m2e - Maven Integration for Ecl…

VS2017 网站打包发布生成的文件中包含.pdb文件,解决办法

右键点击项目属性&#xff0c;选择打包/发布 Web&#xff0c;勾选 排除生成的调试符号&#xff1a; 再次发布&#xff0c;就不会再生成.pdb文件 转载于:https://www.cnblogs.com/JoinLet/p/10297254.html

java分布式学习路线

先理解为什么需要分布式&#xff0c;因为服务器处理的能力需要提升&#xff0c;这里有两个方面&#xff0c;第一是纵向 也就是增加cpu的能力&#xff0c;或者加内存&#xff1b;另一个方向就是 横向 &#xff0c;就是分布式。将本来一台计算机的压力分给多太计算机&#xff0c;…

深入Nginx之《常用参数配置技巧》

常见参配置实战技巧 下面会讲解实战中应该怎么配置更为合理。 1.user 默认是nobody&#xff0c;如果使用nobody&#xff0c;Nginx在运行过程中会出现很多操作没有权限&#xff0c;比如写硬盘。一般都是用低于root级别的用户&#xff0c;比如www&#xff0c;并且可以在linux下设…

transform、transition 动画效果

transform 转换&#xff0c;变形 origin 定义旋转基点&#xff08;left top center right bottom 坐标值&#xff09; transform-origin: 50px 50px; transform-origin: left;。 rotate 旋转 transform:rotate(50deg) 旋转角度可以为负数&#xff0c;需要先定义…

eslint 规则

"off"或0- 关闭规则 "warn"或1- 将规则作为警告打开&#xff08;不影响退出代码&#xff09; "error"或2- 将规则作为错误打开&#xff08;触发时退出代码为1&#xff09;转载于:https://www.cnblogs.com/smzd/p/10844161.html

分布式学习路线

由于分布式系统所涉及到的领域众多&#xff0c;知识庞杂&#xff0c;很多新人在最初往往找不到头绪&#xff0c;不知道从何处下手来一步步学习分布式架构。 本文试图通过一个最简单的、常用的分布式系统&#xff0c;来阐述分布式系统中的一些基本问题。 负载均衡分布式缓存分…

洛谷p2704 炮兵阵地

典型的状态压缩题&#xff0c;只是要定义dp[i][j][k]&#xff0c; #include<bits/stdc.h>using namespace std;int n,m,state[1<<10],tot0;int dp[110][66][66],sum[1<<10],mp[110];int getsum(int x){ int cnt0; while(x){ if(x&1) cnt; …

Flask 框架app = Flask(__name__) 解析

1 #!/usr/local/bin/python2 # codingutf-83 4 from flask import Flask5 app Flask(__name__)6 7 app.route(/)8 def hello_world():9 return Hello World! 10 11 if __name__ __main__: 12 app.run(host0.0.0.0,port9000) 第4行&#xff0c;引入Flask类&#x…

发布订阅

发布订阅 在软件架构中&#xff0c;发布订阅是一种消息范式&#xff0c;消息的发送者&#xff08;称为发布者&#xff09;不会将消息直接发送给特定的接收者&#xff08;称为订阅者&#xff09;。而是将发布的消息分为不同的类别&#xff0c;无需了解哪些订阅者&#xff08;如果…

ps 命令

ps 为我们提供了进程的一次性的查看&#xff0c;它所提供的查看结果并不动态连续的&#xff1b;如果想对进程时间监控&#xff0c;应该用 top 工具。kill 命令用于杀死进程。linux上进程有5种状态: 1. 运行(正在运行或在运行队列中等待) 2. 中断(休眠中, 受阻, 在等待某个条件的…

python练习题-day8

1、有如下文件&#xff0c;a1.txt&#xff0c;里面的内容为&#xff1a; 老男孩是最好的培训机构&#xff0c; 全心全意为学生服务&#xff0c; 只为学生未来&#xff0c;不为牟利。 我说的都是真的。哈哈 分别完成以下的功能&#xff1a; a,将原文件全部读出来并打印。 with o…

消息中间件应用场景

消息中间件应用场景

IDEA开发vue.js卡死问题

在执行cnpm install后会在node_modules这个文件下面生成vue的相关依赖文件&#xff0c; 这个时候当执行cnpm run dev命令时&#xff0c;会导致IDEA出现卡死的问题&#xff0c;解决方法如下&#xff1a; 转载于:https://www.cnblogs.com/heqiuyong/p/10301925.html

[BZOJ4698][SDOI2008]Sandy的卡片(后缀自动机)

差分之后就是求多串LCS。 对其中一个串建SAM&#xff0c;然后把其它串放在上面跑。 对SAM上的每个状态都用f[x]记录这个状态与当前串的最长匹配长度&#xff0c;res[x]是对每次的f[x]取最小值。答案就是res[]的最大值。 考虑f[x]的求法&#xff0c;把s[]放在SAM上跑时&#xff…

点对点

数据传输的可靠性是通过数据链路层和网络层的点对点和传输层的端对端保证的。点对点是基于MAC地址或者IP地址&#xff0c;是指一个设备发数据给另外一个设备&#xff0c;这些设备是指直连设备包括网卡&#xff0c;路由器&#xff0c;交换机。端对端是网络连接&#xff0c;应用程…