shpp @ 2024-03-13 19:46:41
#include <bits/stdc++.h>
using namespace std;
int main(){
char a[50] ;
cin >> a ;
int sum=0 , k=1 ;
for( int i=0 ; i<12; i++ ){
if( a[i]!='-' ){
sum += (a[i]-'0')*k ;
k++ ;
}
}
int t=sum%11;
if( t==(a[12]-'0') ){
cout << "Right" << endl ;
}else {
for( int i=0 ; i<12 ; i++ ){
cout << a[i] ;
}
if( t==10){
cout << 'X' << endl ;
}else{
cout << t << endl ;
}
}
return 0 ;
}
by TPJ_XiaoJing @ 2024-03-13 19:59:17
没有考虑到最后一位可能是字符 'X' 的情况。代码中,如果 t == (a[12]-'0')
则输出 Right
,但这里如果识别码应该是 X
,(a[12]-'0')
这时候不能正确反映这一点,因为 'X' - '0' 并不等于10。
不提供代码。
@shpp
by shpp @ 2024-03-13 20:01:11
@TPJ_XiaoJing 懂了,感谢大佬