题目描述
每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括99位数字、11位识别码和33位分隔符,其规定格式如x-xxx-xxxxx-x,其中符号-就是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表示书籍的出版语言,例如00代表英语;第一个分隔符-之后的三位数字代表出版社,例如670670代表维京出版社;第二个分隔符后的五位数字代表该书在该出版社的编号;最后一位为识别码。

识别码的计算方法如下:

首位数字乘以11加上次位数字乘以22……以此类推,用所得的结果\bmod 11mod11,所得的余数即为识别码,如果余数为1010,则识别码为大写字母XX。例如ISBN号码0-670-82162-4中的识别码44是这样得到的:对067082162这99个数字,从左至右,分别乘以1,2,…,91,2,…,9再求和,即0×1+6×2+……+2×9=1580×1+6×2+……+2×9=158,然后取158 \bmod 11158mod11的结果44作为识别码。

你的任务是编写程序判断输入的ISBN号码中识别码是否正确,如果正确,则仅输出Right;如果错误,则输出你认为是正确的ISBN号码。

输入格式
一个字符序列,表示一本书的ISBN号码(保证输入符合ISBN号码的格式要求)。

输出格式
一行,假如输入的ISBN号码的识别码正确,那么输出Right,否则,按照规定的格式,输出正确的ISBN号码(包括分隔符-)。

输入输出样例
输入 #1复制
0-670-82162-4
输出 #1复制
Right
输入 #2复制
0-670-82162-0
输出 #2复制
0-670-82162-4
说明/提示
2008普及组第一题

题解如下:
#include
#include
#include
using namespace std;
int main()
{
char b[14];
int i = 1, sum = 0, x;
cin >> b;
for (x = 0; x<12; x++)
{
if (b[x] != ‘-’)
{
sum = sum + (b[x] - ‘0’)*i;
i++;
}
}
sum = sum % 11;
if (sum == 10)
{
if (b[12] == ‘X’)
cout << “Right”;
else
{
b[12] = ‘X’; cout << b;
}
}
else
if (sum == (b[12] - ‘0’))
cout << “Right”;
else
{
b[12] = sum+‘0’; cout << b;
}
}

最新文章

  1. javascript中的浮点数运算
  2. Android—9.png的制作和去除黑线
  3. 【腾讯Bugly干货分享】微信读书iOS性能优化
  4. SegmentFault创始人高阳:辍学后带着500元北漂,4年建成国内最大开发者
  5. 《Java7中 下划线的新特性》
  6. php大力力 [011节] PHP常量使用场景
  7. cf 61 E. Enemy is weak 离散化+树状数组
  8. ural 1297(后缀数组+RMQ)
  9. css水平居中和垂直居中
  10. HDU 3749 Financial Crisis
  11. symfony配置
  12. ORA-12638: 身份证明检索失败 解决方法
  13. HTTP手记
  14. [解决]Linux Tomcat启动慢--Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [236,325] milliseconds
  15. [HAOI2016] 放棋子及错排问题
  16. [JLOI2015]城池攻占
  17. leetcode — populating-next-right-pointers-in-each-node
  18. vue分页组件二次封装---每页请求特定数据
  19. python3.7之12306抢票脚本实现
  20. requirements.txt文件教程

热门文章

  1. 关于RequestParam在不同的Spring版本上,接口在controller重载时注解可能失效的踩坑记录
  2. Python调用云服务器AWVS13API接口批量扫描(指哪打哪)
  3. 2. Spring早期类型转换,基于PropertyEditor实现
  4. Codeforces Edu Round 67 A-C + E
  5. 【APIO2020】交换城市(Kruskal重构树)
  6. ACM训练赛:第20次
  7. Android FART脱壳机流程分析
  8. solidity 合约单元测试报错 org.fisco.bcos.web3j.protocol.exceptions.TransactionException: Transaction has failed with status: 0x16. Gas used: 1163650. (not-enough gas?)
  9. Servlet中获取请求参数问题
  10. android adb命令* daemon not running.starting it now on port 5037 * 问题解决