​【CCF-CSP】201312-2 ISBN号码​

题目

给出一个字符串代表 ISBN 号,按题目给出公式检查最后一个校验位是否正确,正确输出 “Right”, 反之输出正确 ISBN 号。

分析

#include <bits/stdc++.h>
using namespace std;
#define d(x) cout<<x<<endl

typedef long long ll;
const int INF = 0x3f3f3f3f;
const int N = 1e3 + 10;

int main() {
char str[20];
scanf("%s", str);
int tmp = 1, ans = 0;
for (int i = 0; i < 12; i++) {
if (str[i] != '-') {
ans += tmp * (str[i] - '0');
tmp++;
}
}
int t = str[12] == 'X' ? 10 : str[12] - '0';
if (ans % 11 != t) {
if (ans % 11 == 10) str[12] = 'X';
else str[12] = (ans % 11) + '0';
printf("%s", str);
} else {
printf("Right\n");
}
return 0;
}