zoukankan      html  css  js  c++  java
  • 落谷P1055 ISBN号码

    题目描述

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

    识别码的计算方法如下:

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

    解题思路:
      下图代码清晰明了,但就是80分~~
      仅作为督促自己而已,看到勿喷~
    import java.util.Scanner;
    public class Main {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            String input = scanner.nextLine();
            int sum=0,m=1;
            if (input.length() ==13){
                for (int i = 0; i < 11; i++) {
                    if (i != 1 && i != 5){
                        int a = input.charAt(i)-48;
                        sum = sum+a*m;
                        m++;
                    }
                }
                if ((input.charAt(12)-48) ==(sum%11)){
                    System.out.println("Right");
                }else {
                    for (int i = 0; i < 13; i++) {
                        if (i==12){
                            if ((sum%11) < 10){
                                System.out.println(sum % 11);
                               
                            }
                            else {
                                System.out.println('X');
                            }
                        }
                        else
                            System.out.print(input.charAt(i));
                    }
    
                }
            }
    
    
        }
    }
  • 相关阅读:
    MQTT TLS 加密传输
    python多进程并发redis
    各种消息队列的特点
    mqtt异步publish方法
    Numpy API Analysis
    Karma install steps for unit test of Angular JS app
    reinstall bower command
    Simulate getter in JavaScript by valueOf and toString method
    How to: Raise and Consume Events
    获取对象的类型信息 (JavaScript)
  • 原文地址:https://www.cnblogs.com/qzhc/p/12309752.html
Copyright © 2011-2022 走看看