#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int main(int argc, char const *argv[])
{
int N,cnt=0,sum,Z;
int weight[]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
string M="10X98765432";
string s;
cin >> N;
while(N--)
{
sum=0;
cin >> s;
for(int i=0;i<17;i++)
sum+=(s[i]-'0')*weight[i]; //计算权重
Z=sum%11; //求模Z
if(M[Z]!=s[17]) //校验码不正确
{
cnt++; //记录错误个数
cout <<s << endl; //输出错误身份证
}
}
if(cnt==0) //错误个数为0 输出All passed
cout << "All passed";
return 0;
}
PAT (Basic Level) Practice 1031 查验身份证 (15分)
最新推荐文章于 2020-08-24 18:38:20 发布