1031. 查验身份证(15)

时间限制
200 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue

一个合法的身份证号码由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:

  1. 4
  2. 320124198808240056
  3. 12010X198901011234
  4. 110108196711301866
  5. 37070419881216001X

输出样例1:

  1. 12010X198901011234
  2. 110108196711301866
  3. 37070419881216001X

输入样例2:

  1. 2
  2. 320124198808240056
  3. 110108196711301862

输出样例2:

  1. All passed
  2.  
  1. // 1031.cpp : 定义控制台应用程序的入口点。
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include<iostream>
  6. #include<string>
  7. #include<typeinfo>
  8. #include<cctype>
  9.  
  10. using namespace std;
  11.  
  12. int main()
  13. {
  14. int N, a[] = { ,,,,,,,,,,,,,,,, },x=,col,row;
  15. char b[] = { '', '', 'X', '', '', '', '', '', '', '', '' };
  16.  
  17. cin >> N;
  18. getchar();
  19.  
  20. string *str = new string[N];
  21. int *sum = new int[N];
  22.  
  23. for (int i = ; i < N; i++)
  24. getline(cin, str[i]);
  25.  
  26. for (col = ; col < N; col++)
  27. {
  28. sum[col] = ;
  29.  
  30. for (row = ; row < ; row++)
  31. {
  32. if (isdigit(str[col][row]))//如果为数字则读入,否则退出循环
  33. sum[col] += a[row]*static_cast<int>(str[col][row]-);
  34. else
  35. break;
  36. }
  37.  
  38. if (row == )//如果没有经过break,则未正常结束,检查最后一位是否正确
  39. {
  40. sum[col] %= ;
  41.  
  42. if (b[sum[col]] != str[col][])
  43. {
  44. cout << str[col] << endl;
  45. x++;//标志量,检查是否全部通过
  46. }
  47. }
  48. else//经过break,肯定不满足全为数字要求
  49. {
  50. cout << str[col] << endl;
  51. x++;
  52. }
  53.  
  54. }
  55.  
  56. if (x == )
  57. cout << "All passed" << endl;
  58.  
  59. delete[] str;
  60. delete[] sum;
  61.  
  62. return ;
  63. }

PAT 乙级 1031 查验身份证(15) C++版的更多相关文章

  1. PAT乙级 1031. 查验身份证(15) 标志要清零!!!!!!!!!

    1031. 查验身份证(15) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 一个合法的身份证号码由17位地区. ...

  2. PAT乙级 1031. 查验身份证(15)

    题目传送:https://www.patest.cn/contests/pat-b-practise/1031 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如 ...

  3. PAT Basic 1031 查验身份证 (15 分)

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

  4. PAT (Basic Level) Practise (中文)-1031. 查验身份证(15)

    PAT (Basic Level) Practise (中文)-1031. 查验身份证(15) http://www.patest.cn/contests/pat-b-practise/1031 一个 ...

  5. PAT 1031 查验身份证(15)(C++&Python)

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

  6. PAT (Basic Level) Practice (中文)1031 查验身份证 (15分)

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

  7. PAT-乙级-1031. 查验身份证(15)

    1031. 查验身份证(15) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 一个合法的身份证号码由17位地区. ...

  8. PAT(B) 1031 查验身份证(Java)

    题目链接:1031 查验身份证 (15 point(s)) 题目描述 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配 ...

  9. PAT 1031. 查验身份证(15)

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

随机推荐

  1. 人工智能之KNN算法

    转载自:https://www.cnblogs.com/magic-girl/p/python-kNN.html 基于python实现的KNN算法 邻近算法(k-NearestNeighbor) 是机 ...

  2. PSP Daily桌面软件Beta阶段WBS以及PSP【王者荣耀交流协会】

    一.WBS 工具:ProcessOn,请访问网址[https://www.processon.com/]. 分解思路:功能是什么/功能实现步骤?技术原型demo? 二.PSP

  3. 【liunx】Linux下的压缩和解压缩命令——jar

    原文链接:http://blog.chinaunix.net/uid-692788-id-2681136.html JAR包是Java中所特有一种压缩文档,其实大家就可以把它理解为.zip包.当然也是 ...

  4. 利用JavaScript jQuery实现图片无限循环轮播(不借助于轮播插件)-----转载

    前言 作为一个前端工程师,无论公司是什么行业,无论你做什么端,基本都会遇到一个避不开的动画效果:循环轮播.做轮播并不难,市场上的轮播插件有很多,其中比较著名的是swiper,使用也非常简单.但轮播插件 ...

  5. Singer 学习二 使用Singer进行gitlab 2 postgres 数据转换

    Singer 可以方便的进行数据的etl 处理,我们可以处理的数据可以是api 接口,也可以是数据库数据,或者 是文件 备注: 测试使用docker-compose 运行&&提供数据库 ...

  6. openresty 编译ngx_pagespeed 模块-docker 构建

    ngx_pagespeed 是一个很不错的web 优化模块,我们通过简单的配置就可以对于web页面的加载有很大的提升 ngx_pagespeed 依赖psol 模块 Dockerfile   # Do ...

  7. MySQL联结查询和组合查询

    联结查询 1.关系表 主键:一列或一组列,能够唯一区分表中的每一行,用来表示一个特定的行 外键:为某个表中的一列,包含另一个表的主键,定义量表的关系. 2.创建联结 规定要连接的表和他们如何关联即可 ...

  8. 事务 — Redis 设计与实现

    非事务状态下的命令以单个命令为单位执行,前一个命令和后一个命令的客户端不一定是同一个: 事务状态则是以一个事务为单位,执行事务队列中的所有命令:除非当前事务执行完毕,否则服务器不会中断事务,也不会执行 ...

  9. 5、Linux-Mac配置环境变量

    1.安装jdk1.6,1.7,1.8 2.查看jdk安装目录 /usr/libexec/java_home -v 1.6 /usr/libexec/java_home -v 1.7 /usr/libe ...

  10. Centos6 rpm 安装mysql5.5(转)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/macfac/article/details/51868712 0. 到官网下载好,想要安装的rpm包 ...