problem

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
鸣谢阜阳师范学院范建中老师补充数据

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

solution

直接模拟,写了大约10mins

#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int z[] = {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
char m[] = {'1','0','X','9' ,'8' ,'7', '6' ,'5' ,'4' ,'3' ,'2'};
int main(){int n; cin>>n;int ok = 1;while(n--){string id;  cin>>id;int sum = 0;for(int i = 0; i < id.size()-1; i++)sum += (id[i]-'0')*z[i];if(m[sum%11] != id[id.size()-1]){cout<<id<<"\n";ok = 0;}}if(ok)cout<<"All passed\n";return 0;
}

【2020模拟考试T1】【PAT乙】1031 查验身份证 (15分)模拟相关推荐

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

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

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

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

  3. C++学习之路 | PTA乙级—— 1031 查验身份证 (15 分)(精简)

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

  4. 1031 查验身份证 (15 分)

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

  5. PAT 1031 查验身份证 (15分)(Java)

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

  6. 【PAT乙级】1031 查验身份证 (15 分)

    题目地址 #include<cstdio> #include<iostream> #include<cstring> #include<string>u ...

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

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

  8. PAT:1031. 查验身份证(15) AC

    #include<stdio.h> #include<stdlib.h> #include<string.h> int main() { int weight[17 ...

  9. 1031 查验身份证 (15分)_21行满分代码

    立志用更少的代码做更高效的表达 PAT乙级最优题解-->传送门 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配 ...

最新文章

  1. Linux中的chmod权限问题
  2. pve 群晖 virtio速度慢_群晖DS Note高级教程——教你使用智能记事本
  3. CMU Facebook论文解读 | 非局部神经网络(附代码实现)
  4. 事故通报绝不能一报了事22344
  5. [翻译] VLDContextSheet
  6. 云付认证已通过可以支付吗_海科融通丨刷新支付日常问题【附交易操作步奏】...
  7. MapReduce:通过数据密集型文本处理
  8. linux强制停止压缩任务,6.25任务(linux压缩、打包命令:zip、tar)
  9. 事务的隔离级别 mysql
  10. eDiary电子日记本
  11. 蓝桥杯 ALGO-70 算法训练 最长字符串
  12. ssm(Spring、Springmvc、Mybatis)实战之淘淘商城-第五天(非原创)
  13. Poj 1755Triathlon 未Ac,先mark
  14. 开源 - WPF报表引擎
  15. win98万能显卡驱动_win98/98系统 u盘万能驱动
  16. python好玩的代码-我珍藏的一些好的Python代码,技巧
  17. 超详细SPSS主成分分析计算指标权重(二:权重计算及极差法标准化)
  18. python爬虫--第一个爬虫程序
  19. 测试京东万象的Webservice接口
  20. mmdet3d纯视觉baseline之数据准备:处理waymo dataset v1.3.1

热门文章

  1. utilities——C++常用仿函数
  2. Python基础——文件拷贝(从手动实现到shutil的使用)
  3. pageoffice 骑缝章_Java 集成PageOffice自带印章配置连接MySQL
  4. visual设计的界面发布到iis上显示不一样_Material Design暗夜模式设计指南
  5. 根据录入的计算公式计算_超全的铝材重量计算公式
  6. python画柱状图-Python绘制柱状图
  7. python基础教程代码-Python基础教程代码怎么是英文 看不懂啊?
  8. python是什么 自学-自学Python会有什么困难?老男孩自学python编程
  9. 语音识别(ASR)基础介绍第四篇——当今流行做法与CTC-阿里云开发者社区
  10. 逆置单链表c语言程序,逆置单链表C语言