1031 查验身份证

简介: 1031 查验身份证

1031 查验身份证 (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

 


这题没有难度,照着规则做就可以了,就是要细心些。

这个题目的挺有意思,可以检验/推测身份证的最后一位校验码。这个题目是检验,其实稍微改一下就可以用身份证前17位求出最后一位的校验码。

 

 

#include<iostream>
#include<string>
#include<cctype>
using namespace std;
int main()
{
  char M[11] = { '1','0','X','9','8','7','6','5','4','3','2' };
  int quan[17] = { 7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2 };
  int N;
  cin >> N;
  string sfz[100];
  for (int i = 0; i < N; i++)
    cin >> sfz[i];
 
  string wrong[100];
  int n_wrong = 0;
  bool iswrong = false;
  int sum = 0;
  for (int i = 0; i < N; i++) {
    sum = 0;
    for (int j = 0; j < 17; j++) {
      if (!isdigit(sfz[i][j])) {
        iswrong = true;
        break;
      }
      sum += (sfz[i][j] - '0') * quan[j];  //这个地方不要忘记-'0'
    }
    int Z = sum % 11;
    if (sfz[i][17] != M[Z])
      iswrong = true;
    if (iswrong) {
      wrong[n_wrong++] = sfz[i];
      iswrong = false;
    }
  }
  for (int i = 0; i < n_wrong; i++)
    cout << wrong[i] << endl;
  if (n_wrong == 0)
    cout << "All passed";
  return 0;
}
相关文章
|
消息中间件 SQL 存储
超详细的RabbitMQ入门,看这篇就够了!
RabbitMQ入门,看这篇就够了
217003 68
|
人工智能 运维 数据可视化
阿里云百炼 MCP服务使用教程合集
阿里云百炼推出首个全生命周期MCP服务,支持一键部署、无需运维,具备高可用与低成本特点。该服务提供多类型供给、低成本托管及全链路工具兼容,帮助企业快速构建专属智能体。MCP(模型上下文协议)作为标准化开源协议,助力大模型与外部工具高效交互。教程涵盖简单部署、GitHub运营、数据分析可视化及文档自动化等场景,助您快速上手。欢迎加入阿里云百炼生态,共同推动AI技术发展!
5996 0
|
Serverless API
【MCP教程系列】在阿里云百炼,实现超级简单的MCP服务部署
阿里云百炼推出业界首个全生命周期MCP服务,支持一键在线注册托管。企业可将自研或外部MCP服务部署于阿里云百炼平台,借助FC函数计算能力,免去资源购买与服务部署的复杂流程,快速实现开发。创建MCP服务仅需四步,平台提供预置服务与自定义部署选项,如通过npx安装代码配置Flomo等服务。还可直接在控制台开通预置服务,体验高效便捷的企业级解决方案。
3039 0
|
缓存 网络协议 安全
阿里云DNS常见问题之新疆地区无法访问网址如何解决
阿里云DNS(Domain Name System)服务是一个高可用和可扩展的云端DNS服务,用于将域名转换为IP地址,从而让用户能够通过域名访问云端资源。以下是一些关于阿里云DNS服务的常见问题合集:
|
JavaScript
如何解决ElementUI中的el-tab-pane组件使用v-show不生效的问题?
如何解决ElementUI中的el-tab-pane组件使用v-show不生效的问题?
1022 3
|
运维 虚拟化 Windows
VMware Workstation常见的故障处理
关于VMware Workstation常见故障处理的指南,包括Windows 10开启虚拟机蓝屏问题的解决方案和虚拟机无法开机时的解决方法。
612 21
VMware Workstation常见的故障处理
|
11月前
极态云中 2 行代码搞定流水账中的期初期末计算!
今天咱们就来聊聊如何用极态云这个神器来解决期初期末的计算!极态云 JIT 真的太强大了,只有你想不到,没有它做不到的。
【stream】List根据某个字段求和
【stream】List根据某个字段求和
787 0
|
人工智能 自然语言处理 前端开发
从客服场景谈:大模型如何接入业务系统
本文探讨了大模型在AI客服中的应用。大模型虽具有强大的知识生成能力,但在处理具体业务如订单咨询、物流跟踪等问题时,需结合数据库查询、API调用等手段。文章提出用Function Call连接大模型与业务系统,允许大模型调用函数获取私域知识。通过具体示例展示了如何设计系统提示词、实现多轮对话、定义Function Call函数,并利用RAG技术检索文档内容。最后,展示了该方案在订单查询和产品咨询中的实际效果。
|
传感器 监控 安全
试试这些局域网监控软件,绝对神器
发现几款局域网监控神器:WorkWin提供权限分配、员工行为监控、时间统计及远程管理;PRTG Network Monitor以直观界面实时监控网络状态;Wireshark深度分析网络数据包,助你轻松管理网络环境,提升效率和安全。
245 0