PAT 乙级 1031 查验身份证

2023-12-26 19:36
文章标签 pat 身份证 查验 乙级 1031

本文主要是介绍PAT 乙级 1031 查验身份证,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一个合法的身份证号码由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<stdio.h>
int main()
{char m[]="10X98765432";int w[]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};int count=0;int n;int z;char a[20];scanf("%d",&n);int i;while(n--){z=0;scanf("%s",a);for(i=0;i<17;i++){z+=(a[i]-'0')*w[i]; //求各个位权重和 }z=z%11;if(a[17]!=m[z])    //不符合 {printf("%s\n",a);count++;}	}if(!count)printf("All passed\n");return 0;} 

这篇关于PAT 乙级 1031 查验身份证的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/540588

相关文章

Python批量读取身份证信息录入系统和重命名

前言 大家好, 如果你对自动化处理身份证图片感兴趣,可以尝试以下操作:从身份证图片中快速提取信息,填入表格并提交到网页系统。如果你无法完成这个任务,我们将在“Python自动化办公2.0”课程中详细讲解实现整个过程。 实现过程概述: 模块与功能: re 模块:用于从 OCR 识别出的文本中提取所需的信息。 日期模块:计算年龄。 pandas:处理和操作表格数据。 PaddleOCR:百度的

贷款利率高低跟什么有关?仅凭身份证就能贷到款?额度是多少?

在金融的广阔舞台上,借款人的“信用基石”——即其综合资质,是决定贷款利率高低的决定性因素。这并非偶然,而是银行基于详尽的风险评估与收益预期所做出的精准判断。 需明确的是,贷款的易得性并不意味着无门槛的放任。它更像是设置了一个更为宽泛的准入标准,让多样化的借款人能够有机会尝试,但能否真正获得贷款,还需依据个人的经济实力、职业稳定性及信用历史的纯净度来综合评判。银行的核心考量始终在于确保资金的安

PAT甲级-1044 Shopping in Mars

题目   题目大意 一串项链上有n个钻石,输入给出每个钻石的价格。用m元买一个连续的项链子串(子串长度可为1),如果不能恰好花掉m元,就要找到最小的大于m的子串,如果有重复就输出多个,按递增顺序输出子串的前端和后端索引。 原来的思路 取连续的子串使和恰等于m,没有恰等于就找最小的大于。可以将子串依次累加,使得每个位置都是起始位置到该位置的序列和,整个数组显递增顺序,就可以用右边减左边

PAT (Advanced Level) Practice——1011,1012

1011:  链接: 1011 World Cup Betting - PAT (Advanced Level) Practice (pintia.cn) 题意及解题思路: 简单来说就是给你3行数字,每一行都是按照W,T,L的顺序给出相应的赔率。我们需要找到每一行的W,T,L当中最大的一个数,累乘的结果再乘以0.65,按照例子写出表达式即可。 同时还需要记录每一次选择的是W,T还是L

Node.js实名认证接口示例-身份证、银行卡、手机号实名认证

随着互联网的高速发展,人们可以发表言论的渠道越来越多。网络平台不断汲取各地、各人、各时发表的各种信息。人们喜欢将信息发布到微博、知乎、天涯、豆瓣等等网络平台,逐步的,网络信息进入大爆炸时代。这些大量涌现的信息中难免掺杂着一些不良信息,比如:虚假信息、污言秽语、违法违规信息的发布。这些信息充斥其中,严重影响了网络的环境。   若想拥有一片安全、绿色的网络环境,那么就要让所有人意识到自己需要承担

一款支持身份证、驾驶证、护照、车牌等证件识别插件

CardOCR 证件识别是一个apk插件,为应用开发方提供身份证、驾驶证、车牌号、护照等的OCR识别服务,如通过扫描身份证,可以快速识别二代身份证上的身份证号等信息,并将这些信息返回给第三方应用。 最新版本的OCR识别库具备以下明显优势: 识别率大幅提高,车牌号和身份证正常情况下毫秒级完成识别,成功率达到99%以上。车牌识别除了支持普通的蓝色、黄色、警用等车牌外,同时也支持新能源车牌。驾驶证

阿里云身份证二要素详细使用

初步: 先登录阿里云(找官网链接) 2、云市场搜索身份证二要素 看个人需求选择 3、我选择的是下边这个 4、接下来看文档具体调用(在请求示例中有选择语言的代码 我选择的就是java) 5、在控制台看appcode码  放入代码中 6、接下来就可以运行代码看结果 示例 我做了个小案例 创建一个项目写一个简单的接口Postman测试该接口 得到结果

C++身份证实名认证-实名制-身份证三要素认证-身份认证-身份验真-接口

身份证实名认证一般是指通过一定的技术,对用户的身份进行确认的过程,常见的身份证核验方式包括身份证二要素、二要素+人像、手机号、银行卡等的一系列认证方式。   身份证核验一般需要提供身份证号码、姓名、证件人像、现场人像要素信息来与权威数据库中的信息进行匹配,以此来确认用户的真实身份。   C++身份证实名认证接口示例: #include #include #include int mai

C++发票查验-发票验真-发票真伪查验-发票ocr识别-数电票真伪-接口

发票查验接口,是指通过特定的技术手段和服务平台,对发票的真伪进行验证和识别的一项服务。在现代商业活动中,发票作为一种重要的财务和法律凭证,其真实性对于维护税务秩序和防范财务风险至关重要。   随着技术的进步,人工智能和OCR(光学字符识别)技术也被应用于发票查验之中。通过OCR技术,可以自动识别发票上的文本信息,包括发票号码、代码、金额等关键信息,并自动完成查验。这种技术不仅提高了查验效率

九度考研真题 浙大 2009-1浙大1031:xxx定律

//1031:xxx定律 #include<iostream> using namespace std; int main(){ int n; while(cin>>n&&n!=0){ int num=0; while(n!=1){ if(n%2==0){ n/=2; num++; } else{ n=3*n+1; n/