文章

12

粉丝

693

获赞

3

访问

126.8k

头像
只通过50%的样例
P1722 北京理工大学2017年机试题
发布于2020年4月20日 14:55
阅读数 12.2k

#include <stdio.h>
#include <string.h>
#include <bits/stdc++.h>
using namespace std;	
int main() {
	
	int weight[17] = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
	char match[11] = {'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'};
	char str[20];
	while(scanf("%s", str) != EOF) {
		int len = strlen(str);
		if(len > 18) printf("Wrong ID\n");
			else {
			if(str[len - 1] == 'x') str[len - 1] -= 32;
			long long sum = 0;
			for(int i = 0; i < len - 1; ++i) {
				sum += weight[i] * (str[i] - '0');
			}
			if(match[sum % 11] == str[len - 1]) printf("Correct ID\n");
			else printf("Wrong ID\n");
		}	
	}
	 
	
	return 0;
} 

 

登录查看完整内容


登录后发布评论

4 条评论
wyz5008 VIP
2023年7月27日 23:57

而且X应该是大写的,否则样例过不了

赞(0)
admin SVIP
2020年4月21日 10:47

如果所输入身份证号码合法,输出ID Correct,否则输出ID Wrong。laugh

赞(1)

Jeff_zhu : 回复 admin: 猝不及防

2020年4月21日 14:09

Jeff_zhu : 回复 admin: 哈哈哈哈

2020年4月21日 14:10