试题名称: 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

解题思路: 

代码如下(java):

      

 package ccf_text2013_12;

 import java.io.BufferedReader;
import java.io.InputStreamReader;
/**
* 每一本正式出版的图书都有一个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号码。
* @author Hello stranger
*
*/
public class ISBN { public static void main(String[] args) { BufferedReader bin = new BufferedReader(new InputStreamReader(System.in)); try{ int sum = 0; char cc = '0'; String isbn_0 = bin.readLine(); String isbn = isbn_0.replace("-", ""); for(int i = 0; i < 9; i++){ int ii = (int) isbn.charAt(i) - 48; sum += ii * (i + 1);
} sum = sum % 11; if(sum == 10){ cc = 'X'; }else{ cc = (char)(sum + 48); } if(cc == isbn.charAt(9)){ System.out.println("Right"); }else{ isbn_0 = isbn_0.substring(0, 12) + cc; System.out.println(isbn_0);
} }catch(Exception e){ e.printStackTrace();
}
} }

最新文章

  1. java web学习总结(十一) -------------------基本概念使用Cookie进行会话管理
  2. vuejs的动态过滤
  3. C指针-数组和指针的归一
  4. js实现input输入框只能输入数字的功能(完美测试通过)
  5. does not match bootstrap parameter
  6. 【Sqlserver】企业管理器打不开
  7. CouchBase 遇到问题笔记(一)
  8. mysql INNODB_TRX 事务表
  9. 6、Khala的登录生命周期管理
  10. Objective-C 使用核心动画CAAnimation实现动画
  11. linux安装selenium+chrome+phantomjs
  12. springboot 修改页面不重启
  13. edgedb 强大的对象关系数据库
  14. Python3学习笔记07-List
  15. Spring Boot(十七):使用Spring Boot上传文件
  16. ubuntu下安装Pycharm
  17. OO第三次博客作业——规格
  18. k8s 集群搭建
  19. LeetCode OJ——Validate Binary Search Tree
  20. [luoguP3668] [USACO17OPEN]Modern Art 2 现代艺术2(栈)

热门文章

  1. JavaWeb一小时急速入门总结反思
  2. Head First设计模式之外观模式
  3. 《UNIX环境高级编程》第七章进程环境
  4. eclipse环境下日志打印输出
  5. H2Engine游戏服务器设计之属性管理器
  6. H5前端性能测试总结
  7. 关于 for 循环与 循环嵌套
  8. Redux 介绍
  9. hihoCoder 1039:字符消除(字符串处理)
  10. CodeForces832-B. Petya and Exam