- lizexuan's blog
【08NOIP普及组】ISBN号码
- 2023-7-16 13:36:04 @
题目:
题目解析
看注释
代码
#include <bits/stdc++.h>
using namespace std;
int main() {
long long sum = 0; // 不开long long见祖宗(((
string s; // 读入ISBN号码
int cnt = 1; // 由于是1乘到9,所以要个计数器
cin >> s; // 由于格式为x-xxx-xxxxx-x没有空格直接写cin就行
for (int i = 0; i <= 10; i++) { // 不算最后校验码!!!
if (isdigit(s[i])) { // 如果为数字
sum += (s[i] - '0') * cnt; // 减去'0'乘上计数器
cnt++; // 增加
}
}
if ((sum % 11) == s[12] - '0' || ((sum % 11 == 10) && s[12] == 'X')) { // 如果符合标准
cout << "Right" << endl;
} else { // 否则修改(((
for (int i = 0; i < 12; i++) {
cout << s[i];
}
if (sum % 11 == 10) {
cout << "X" << endl;
} else {
cout << sum % 11 << endl;
}
}
return 0;
}