题目链接
我的思路:
题目不难,遍历操作即可,主要是这个X的问题在里面搞了好久,一开始是没考虑到mod结果是10要用X替代,后来输出考虑到了又没考虑输入也会有X(捂脸
考虑得还是很不周到鸭
贴一下code
#include <iostream>
#include <string>
using namespace std;
int main() {
string inp;
int sum = 0,count = 0;
cin >> inp;
for (int i = 0; i < inp.size() - 1; i++) {
char tmp = inp[i];
int num = 0;
if (tmp != '-' && tmp != 'X') {
count++;
num = tmp - '0';
}
else if (tmp == 'X') {
count++;
num = 10;
}
sum += num * count;
}
sum = sum % 11;
if ((inp[inp.size() - 1] == 'X' && sum == 10) || sum == inp[inp.size() - 1] - '0') {
cout << "Right";
}
else {
if (sum != 10) {
cout << inp.substr(0, inp.size() - 1) + to_string(sum);
}
else {
cout << inp.substr(0, inp.size() - 1) << "X";
}
}
return 0;
}