很简单的模拟,谨以此纪念因为s.length()没减一没过第三个测试点debug半天
函数isdigit(char) 原来还有这东西
#include <bits/stdc++.h>
using namespace std;
int quan[20]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
char M[20]={'1','0','X','9','8','7','6','5','4','3','2'};
int main(){
int n;
cin>>n;
bool allpa=true;
while(n--){
string s;
cin>>s;
int num=0;
bool isdig=true;
for(int i=0;i<s.length()-1;i++){
int dig=(int)(s[i]-'0');
num+=dig*quan[i];
if(!isdigit(s[i])||s.length()!=18){
isdig=false;
cout<<s<<endl;
allpa=false;
break;
}
}
if(isdig){
num%=11;
if(s[17]!=M[num]){
cout<<s<<endl;
allpa=false;
}
}
}
if(allpa)cout<<"All passed";
return 0;
}