PAT B1031 查验身份证(15)
AC代码
#include <cstdio>
#include <iostream>
using namespace std;
const int max_n = 110;
//权重
int W[17] = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
//验证码
char M[11] = {'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'};
int main() {
#ifdef ONLINE_JUDGE
#else
freopen("1.txt", "r", stdin);
#endif // ONLINE_JUDGE
int n;
char a;
scanf("%d", &n);
int num = 0; //问题身份证数量
char err[max_n][18] = {0}; //存储问题身份证号
for(int i = 0; i < n; i++) {
bool flag = true;
char temp[18] = {0};
int sum = 0, t = 0; //t:计数正确的身份证号
//printf("%d:", i);
for(int j = 0; j < 18; j++) { //读取身份证号
cin >> a;
temp[j] = a;
}
for(int h = 0; h < 17; h++) {
//printf("%c", temp[h]);
if(!(temp[h] >= '0' && temp[h] <='9')){
//printf("break:%c\n", temp[h]);
break;
}
int n = temp[h] - '0';
//printf(" n: %d ", n);
sum += n * W[h];
t++;
}
// printf("\n");
// printf("t:%d ", t);
if(t < 17) flag = false;
for(int h = 0; h < 18; h++) {
err[i][h] = temp[h];
}
if(M[sum % 11] != temp[17]) flag = false;//验证码不等于身份证号最后一位
//printf("flag = %d, sum = %d\n", flag, sum);
if(flag == 0) { //存储问题身份证号
for(int j = 0; j < 18; j++) {
err[num][j] = temp[j];
}
num++; //问题身份证数量加一
}
}
if(num == 0) {
printf("All passed"); //身份证全部正确
} else if(num != 0){
//printf("%d\n", num);
for(int h = 0; h <= num - 1; h++) {
for(int j = 0; j < 18; j++) {
printf("%c", err[h][j]);
}
printf("\n");
}
}
return 0;
}
PAT B1031 查验身份证(15)的更多相关文章
- PAT 1031 查验身份证(15)(C++&Python)
1031 查验身份证(15)(15 分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8, ...
- PAT 1031. 查验身份证(15)
一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8, ...
- PAT B1031查验身份证
一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8, ...
- PAT (Basic Level) Practise (中文)-1031. 查验身份证(15)
PAT (Basic Level) Practise (中文)-1031. 查验身份证(15) http://www.patest.cn/contests/pat-b-practise/1031 一个 ...
- PAT乙级 1031. 查验身份证(15) 标志要清零!!!!!!!!!
1031. 查验身份证(15) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 一个合法的身份证号码由17位地区. ...
- PAT 乙级 1031 查验身份证(15) C++版
1031. 查验身份证(15) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 一个合法的身份证号码由17位地区. ...
- PAT (Basic Level) Practice (中文)1031 查验身份证 (15分)
1031 查验身份证 (15分) 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为: {7,9,10,5,8,4,2 ...
- PAT-乙级-1031. 查验身份证(15)
1031. 查验身份证(15) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 一个合法的身份证号码由17位地区. ...
- PAT乙级 1031. 查验身份证(15)
题目传送:https://www.patest.cn/contests/pat-b-practise/1031 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如 ...
随机推荐
- windows下mysql 主库从库同步
今天先讲讲数据库的主从同步,两个好处: 一是读写分离可以用上.比如 写操作就写到主数据库,读就再从库读取 二是纯粹给数据库备份,以防硬盘彻底崩了 主从数据库操作准备: 两台电脑,都安装好mysql 5 ...
- Neo4j (1)创建节点
节点模式的构成:(Variable:Lable1:Lable2{Key1:Value1,Key2,Value2}),实际上,每个节点都有一个整数ID,在创建新的节点时,Neo4j自动为节点设置ID值, ...
- Codeforces 955C Sad powers(数论)
Codeforces 955C Sad powers 题意 q组询问,每次询问给定L,R,求[L,R]区间内有多少个数可以写成ap的形式,其中a>0,p>1,1 ≤ L ≤ R ≤ 1e1 ...
- elasticsearch Delete (根据条件删除)
之前在 2.X版本里 这个Delete By Query功能被去掉了 因为官方认为会引发一些错误 如需使用 需要自己安装插件. bin/plugin install delete-by-query 需 ...
- Devops(一):CentOS7 安装Maven3.6.1详解
https://yq.aliyun.com/topic/78?spm=5176.8290451.656547.7.rMYhAF https://yq.aliyun.com/activity/155?u ...
- 一个简易的PHP读取CSV文件的方法
1. 思路:先打开文件,读取出文件有多少行,然后逐行读取数据放入一个数组中 public function read_csv_lines($csv_file = '', $lines = 0, $of ...
- SR论文代码汇总
1.SRCNN 页面 里面有论文,matlab和caffe代码. Tensorflow https://github.com/tegg89/SRCNN-Tensorflow 2.ESPCN 论文链接 ...
- 【Makefile】Makefile的自动化变量$@、$^ 、$<等
所谓自动化变量,就是这种变量会把“模式”中所定义的一系列的文件自动地挨个取出,直至所有的符合模式的文件都取完了.这种自动化变量只应出现在规则的命令中. $@ 表示规则中的目标文件集.在模式规则中,如果 ...
- LC 725. Split Linked List in Parts
Given a (singly) linked list with head node root, write a function to split the linked list into k c ...
- RabbitMQ学习之:(八)Topic Exchange (转贴+我的评论)
From: http://lostechies.com/derekgreer/2012/05/18/rabbitmq-for-windows-topic-exchanges/ RabbitMQ for ...