thedog123 @ 2022-07-30 19:50:08
#include<iostream>
#include<cstring>
using namespace std;
int main(){
char a[1001];
cin.getline(a,1001);
int lena = strlen(a),sum=0;
int num = 0;
for(int i=0;i<lena-1;i++){
if(a[i]!='-'){
sum += int(a[i]-'0') * (i-num+1);
}else{
num++;
}
}
int c=0;
if(a[lena-1]=='X'){
c = 10;
}else{
c = int(a[lena-1]-'0');
}
if(sum%11==c){
cout<<"Right"<<endl;
}else{
for(int i=0;i<lena-1;i++){
cout<<a[i];
}
if(sum%11==10){
cout<<'X';
}else{
cout<<sum%11;
}
}
return 0;
}
by metaphysis @ 2022-07-31 10:10:17
@thedog123
输入可能是 Windows 环境下生成的数据,因此按您的输入处理可能存在问题,算法是没问题的。也就是说,您读取的输入中可能会包含换行符。
by thedog123 @ 2022-07-31 21:28:11
@metaphysis 谢谢