输入格式
输入只有一行,是一个字符序列,表示一本书的 ISBN 号码(保证输入符合 ISBN 号码的格式要求)。
输出格式
输出一行,假如输入的 ISBN 号码的识别码正确,那么输出 Right,否则,按照规定的格式,输出正确的 ISBN 号码(包括分隔符 -)。
输入样例1:
0-670-82162-4
输出样例1:
Right
输入样例2:
0-670-82162-0
输出样例2:
0-670-82162-4
题意:
就是给个ISBN号码,如果正确就输出Right,不对就输出正确的
思路:
硬照着样子模拟就行了
代码如下:
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
const int N = 13;
char g[N];
int getNum(int start, int end)
{
int res = 0;
for(int i = end, j = 1; i >= start; i --, j *= 10)
res += (g[i] - '0') * j;
return res;
}
int check()
{
int res = 0;
int map[9] = {0, 2, 3, 4, 6, 7, 8, 9, 10};
for(int i = 1; i <= 9; i ++)
res += (g[map[i - 1]] - '0') * i;
if(res % 11 == (g[12] - '0') || ( res % 11 == 10 && g[12] == 'X' ))
return -1;
else return res % 11;
}
int main()
{
int lan, shop, num, flag;
cin >> g;
lan = g[0] - '0';
shop = getNum(2, 4);
num = getNum(6, 10);
flag = g[12] - '0';
if(check() == -1)
cout << "Right" << endl;
else
{
if(check() != 10)
g[12] = check() + '0';
else
g[12] = 'X';
cout << g << endl;
}
return 0;
}