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

鸣谢阜阳师范学院范建中老师补充数据

鸣谢浙江工业大学之江学院石洗凡老师纠正数据

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

解题代码:

#include<stdio.h>
#include<string.h>
int main()
{
	int N,i,j,z,count=0;
	int arr1[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
	char M,arr[19],arr2[11]={'1','0','X','9','8','7','6','5','4','3','2'};
	scanf("%d",&N);
	char brr[N][19];
	for(i=0;i<N;i++)
	{
		scanf("%s",arr);
		for(j=0,z=0;j<17&&arr[j]>='0'&&arr[j]<='9';j++)
			z=z+(arr[j]-'0')*arr1[j];
		if(j==17&&arr2[z%11]==arr[17]) 
			count++;
		else	printf("%s\n",arr);
	}
	if(count==N)
		printf("All passed");	
	return 0;
}

运行截图:

 

身份证指纹识别技术的实现及指纹核验系统的集成涉及多个关键技术环节,涵盖硬件采集设备、软件算法处理以及系统集成应用等方面。 ### 身份证指纹识别技术实现 在身份证指纹识别技术中,主要依赖于指纹采集传感器和匹配算法。指纹采集传感器通过光学、电容或超声波等技术获取指纹图像,其中电容式传感器在消费电子领域应用广泛,具有较高的分辨率和抗干扰能力。在身份证应用中,通常采用活体检测技术,以确保采集到的指纹来自真实手指而非伪造品。指纹图像采集后,通过特征提取算法将指纹的脊线和谷线特征转化为数字化模板,并与数据库中的模板进行比对[^3]。 ### 指纹核验系统集成 指纹核验系统的集成通常包括以下几个关键模块: 1. **采集模块**:负责通过指纹传感器采集指纹图像,并进行图像增强和特征提取。例如,北京中安未来研发的系统中集成了OCR识别技术与人脸识别技术,实现了身份证信息的自动读取与身份核验功能[^1]。 2. **比对模块**:将提取的指纹特征与数据库中存储的模板进行匹配。这一过程通常采用匹配算法,如基于细节特征点的比对方法,以判断输入指纹与模板是否属于同一人。 3. **安全模块**:为确保指纹数据的安全性,系统通常采用加密传输和存储机制。例如,在金融领域,深圳农商行通过引入多模态生物识别统一身份认证平台,结合人脸识别与指纹识别技术,提升了系统的安全性与用户体验[^2]。 4. **接口与集成**:指纹核验系统通常需要与现有身份认证系统或业务系统进行集成。例如,服务器端的人脸识别人证识别集成接口查验系统可以通过API接口实现与各类业务系统的无缝对接,从而实现身份核验功能的快速部署[^1]。 ### 代码示例 以下是一个简单的指纹识别系统接口调用示例,使用Python语言模拟指纹比对过程: ```python import hashlib class FingerprintMatcher: def __init__(self, database): self.database = database # 指纹模板数据库,格式为 {user_id: fingerprint_template} def extract_features(self, raw_image): # 模拟指纹特征提取 return hashlib.sha256(raw_image.encode()).hexdigest() def match(self, user_id, raw_image): extracted_template = self.extract_features(raw_image) stored_template = self.database.get(user_id) if stored_template and extracted_template == stored_template: return True return False # 示例数据库 fingerprint_database = { "user123": "a1b2c3d4e5f67890", "user456": "0a9b8c7d6e5f4321" } matcher = FingerprintMatcher(fingerprint_database) raw_input = "raw_fingerprint_image_data" # 假设这是从传感器获取的原始指纹图像数据 result = matcher.match("user123", raw_input) print("指纹匹配结果:", result) ``` 该示例模拟了一个简单的指纹比对流程,实际应用中需结合具体的硬件设备与算法库实现。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值