其他分享
首页 > 其他分享> > L1-016 查验身份证 (15 point(s))

L1-016 查验身份证 (15 point(s))

作者:互联网

#include <bits/stdc++.h>
using namespace std;

int main(){
	int Pass = 1, N, weight[17]{7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
	string M = "10X98765432";
	cin >> N;
	
	while(N--){
		string str;
		int Z = 0;
		// 身份证没有空格 用cin 
		cin >> str;
		
		// 计算Z 
		for(int i = 0; i < str.size(); i++)
			Z += (str[i] - '0') * weight[i];
			
		// 判断校验码M 
		if(str[17] != M[Z % 11]){
			Pass = 0;
			cout << str << endl;
		}
	}
	if(Pass) cout << "All passed";
} 

标签:15,016,17,point,int,cin,str,身份证,PAT
来源: https://www.cnblogs.com/Atl212/p/15367858.html