CCF-CAP 201312-2 ISBN号码 答案
2015-09-12 19:46
204 查看
试题编号: | 201312-2 |
试题名称: | ISBN号码 |
时间限制: | 1.0s |
内存限制: | 256.0MB |
问题描述: | 问题描述 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表示书籍的出版语言,例如0代表英语;第一个分隔符“-”之后的三位数字代表出版社,例如670代表维京出版社;第二个分隔之后的五位数字代表该书在出版社的编号;最后一位为识别码。 识别码的计算方法如下: 首位数字乘以1加上次位数字乘以2……以此类推,用所得的结果mod 11,所得的余数即为识别码,如果余数为10,则识别码为大写字母X。例如ISBN号码0-670-82162-4中的识别码4是这样得到的:对067082162这9个数字,从左至右,分别乘以1,2,…,9,再求和,即0×1+6×2+……+2×9=158,然后取158 mod 11的结果4作为识别码。 编写程序判断输入的ISBN号码中识别码是否正确,如果正确,则仅输出“Right”;如果错误,则输出是正确的ISBN号码。 输入格式 输入只有一行,是一个字符序列,表示一本书的ISBN号码(保证输入符合ISBN号码的格式要求)。 输出格式 输出一行,假如输入的ISBN号码的识别码正确,那么输出“Right”,否则,按照规定的格式,输出正确的ISBN号码(包括分隔符“-”)。 样例输入 0-670-82162-4 样例输出 Right 样例输入 0-670-82162-0 样例输出 0-670-82162-4 |
#include <iostream> using namespace std; int main() { int s[15]; char str[15]; for (int i=0,j=0;i<13;i++){ cin >> str[i]; if (str[i] != '-'){ if (str[i] == 'X') s[j] = 10; else s[j]= str[i] - '0'; j++; } } int su=0; for (int i=0;i<9;i++){ su+=s[i]*(i+1); } int mo; mo=su%11; if (mo == s[9]) cout << "Right" << endl; else { for (int i=0;i<12;i++) cout << str[i]; if (mo == 10) cout << 'X' << endl; else cout << mo << endl; } return 0; }
相关文章推荐
- Android 用户界面---拖放(Drag and Drop)(二)
- Linux网络配置
- Android 用户界面---拖放(Drag and Drop)(一)
- [python] 爬取乌云知识库的标题
- 给Zabbix一件华丽的衣服Grafana插件
- oracle 存储过程 传参数,如果是希望传参值也被利用起来,存储过程里面虽有IN,但OUT必不可少。
- Linux 系统分析 20150912
- 站点标题应该怎样写才能增加浏览?
- Python+OpenCV学习(8)---Harris_corner
- 欢迎使用CSDN-markdown编辑器
- HDU 3153 Pencils from the 19th Century(数学)
- 第99讲:手动Artifacts打包并运行SBT开发Akka第一个案例学习笔记
- CCF-CAP 201312-1 出现次数最多的数 答案
- SpringMVC Ajax返回的请求json 的方式来解决在中国字符串乱码问题
- 【分布式计算】MapReduce的替代者-Parameter Server
- ElasticSearch及插件安装,集群安装
- C++ 初始化类的常量数据成员、静态数据成员、常量静态数据成员
- 第四天 :系统运行级别和单用户+救援模式
- Scala学习笔记-搭建开发环境
- javascript HTML DOM listener