注意:gets可以讀回車
我沒有檢查前17位是否全是數字,也通過了。但要是有用心險惡的情況,也不一定……
#include<cstring>
#include<cstdio>
int main(){
int n=0,z=0,flag=true;
char str[19]={},M[12]={'1','0','X','9','8','7','6','5','4','3','2'};
int qual[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
scanf("%d",&n);
while(n>0){
scanf("%s",str);
int a=0;
for(int i=0;i<17;i++){
a=(str[i]-'0')*qual[i]+a;
}
if(M[a%11]!=str[17]){
puts(str);
flag=false;
}
n--;
}
if(flag){
puts("All passed");
}
return 0;
}
//這是加上的,雖然出樣例的應該沒那麼陰毒……
#include<cstring>
#include<cstdio>
int main(){
int n=0,z=0,flag=true;
char str[19]={},M[12]={'1','0','X','9','8','7','6','5','4','3','2'};
int qual[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
scanf("%d",&n);
while(n>0){
scanf("%s",str);
int a=0,i=0;
for(i=0;i<17;i++){
if(!(str[i]>='0'&&str[i]<='9'))break;
a=(str[i]-'0')*qual[i]+a;
}
if(i<17){
flag=false;
puts(str);
}else{
if(M[a%11]!=str[17]){
puts(str);
flag=false;
}}
n--;
}
if(flag){
puts("All passed");
}
return 0;
}
csdn的編輯器真噁心