返回目录
注意点
1.本题解题思路是,先计算前16位数字与对应权重乘积之和sum,再使用M[sum%11]对sum取模11,找出对应的M符号,最后进行比较即可
#include <bits/stdc++.h>
using namespace std;
int weight[20]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
char M[15]={'1','0','X','9','8','7','6','5','4','3','2'};
int main(){
int n;
scanf("%d",&n);
bool flag=true;
while(n--){
char id[20];
scanf("%s",id);
int sum=0;
for(int i=0;i<17;i++)sum+=(id[i]-'0')*weight[i];
if(M[sum%11]!=id[17]){
printf("%s\n",id);
flag=false;
}
}
if(flag)printf("All passed\n");
return 0;
}