• AC日记——ISBN号码 openjudge 1.7 29


    29:ISBN号码

    总时间限制: 
    1000ms
     
    内存限制: 
    65536kB
    描述

    每一本正式出版的图书都有一个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号码(包括分隔符“-”)。
    样例输入
    样例 #1:
    0-670-82162-4
    
    样例 #2:
    0-670-82162-0
    样例输出
    样例 #1:
    Right
    
    样例 #2:
    0-670-82162-4
    来源
    NOIP2008复赛 普及组 第一题
       
      思路:
            水题大模拟;
          来,上代码:
    #include<cstdio>
    #include<string>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    
    using namespace std;
    
    int num[11],now=0,len,cur_1=0;
    
    char word[300];
    
    int main()
    {
        gets(word);
        len=strlen(word);
        for(int i=0;i<len;i++)
        {
            if(now==9) break;
            if(word[i]>='0'&&word[i]<='9')
            {
                num[++now]=word[i]-'0';
                word[i]-='0';
            }
        }
        for(int i=1;i<=9;i++)
        {
            num[i]=num[i]*i+num[i-1];
        }
        if(word[12]=='X') cur_1=10;
        else cur_1=word[12]-'0';
        if(num[9]%11==cur_1) printf("Right
    ");
        else
        {
            int cur_2=0;
            for(int i=0;i<len;i++)
            {
                if(cur_2==9) break;
                if(word[i]>=0&&word[i]<=9)
                {
                    word[i]+='0';
                    cur_2++;
                }
                putchar(word[i]);
            }
            putchar('-');
            if(num[9]%11==10) printf("X
    ");
            else printf("%d
    ",num[9]%11);
        }
        return 0;
    }
  • 相关阅读:
    JDBC 连接 MySQL 数据库
    通过java类的反射机制获取类的属性类型
    反射机制实例化类,并获取类中的属性、方法、和构造器
    java8u162反射机制的一个BUG
    Java反射关于getDeclaredMethods()和getMethods()的区别
    Java反射
    30天C#基础巩固------了解委托,string练习
    30天C#基础巩固------读写流(StreamWrite/StreamReader)
    30天C#基础巩固------集合,File(文件操作 ),Encoding处理字符集
    30天C#基础巩固------面向鸭子编程,关于string和File的练习
  • 原文地址:https://www.cnblogs.com/IUUUUUUUskyyy/p/6106080.html
Copyright © 2020-2023  润新知