P1055 [NOIP2008 普及组] ISBN 号码

简介: P1055 [NOIP2008 普及组] ISBN 号码


题目描述

每一本正式出版的图书都有一个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 <iostream>
//# include <stdlib> 
using namespace std;
int main()
{
//  string s;
//  cin>>s;
char s[13];
for(int i=0;i<=12;i++)
{
  cin>>s[i];
}
  int j=1,i=0,n=0;
  for(i=0;i<12;i++)
  {
    if(s[i]>47&&s[i]<58)
    {
      int a=0;
      a=(int)s[i];
      //printf("%d\n",a);
        n=(a-48)*j+n;
        ++j;  
    }
  }
  if(n%11==s[12]-48||(n%11==10&&s[12]=='X'))
  { 
  cout<<"Right";  
  }
  else
  {
//    if(s[12]=='X'&&s[12])
  for(int i=0;i<12;i++)
  {
    cout<<s[i];
  }
  if(n%11==10)
  cout<<"X";
  else
  cout<<n%11; 
  }
}


相关文章
|
4月前
|
算法 C++
【洛谷 P1055】[NOIP2008 普及组] ISBN 号码 题解(字符串)
该编程题目要求编写程序检查输入的ISBN号码的识别码是否正确。ISBN号码格式为`x-xxx-xxxxx-x`,其中`x`是数字,最后一位是通过特定算法计算得出的识别码。算法是将前9位数字乘以1到9的加权值,求和后对11取模,模为10时识别码为大写`X`,否则为对应模值的数字。程序接收一个符合格式的ISBN号码,验证识别码并输出`Right`(如果正确)或修正后的正确ISBN号码。提供的AC代码使用C++实现这一功能。
52 0
P1088 [NOIP2004 普及组] 火星人
P1088 [NOIP2004 普及组] 火星人
P1036 [NOIP2002 普及组] 选数
P1036 [NOIP2002 普及组] 选数
蓝桥青少年组——计算24 2020-11-25
蓝桥青少年组——计算24 2020-11-25
P1093 [NOIP2007 普及组] 奖学金(模拟排序)
P1093 [NOIP2007 普及组] 奖学金(模拟排序)
51 0
【NOIP2017普及组正式赛】图书管理员(librarian)
【NOIP2017普及组正式赛】图书管理员(librarian)
122 0
洛谷刷题题解笔记----P1055 [NOIP2008 普及组] ISBN 号码(通过第4第8测试点)
洛谷刷题题解笔记----P1055 [NOIP2008 普及组] ISBN 号码(通过第4第8测试点)
|
编解码 机器人
VOS3000——AXB模块小号系统产品说明介绍
其工作原理如下:拨打方式是A号(销售号码)拨打到X号(中间号码),然后由X号(中间号)把A号的号码转接到B号(客户号码)上边,这样算下来,拨打记录里边就没有直接拨打客户手机,从而规避风险,客户接到的还是A号。
1358 0
|
测试技术 C++
第十一届蓝桥杯省赛 C++ B组 - 成绩统计
第十一届蓝桥杯省赛 C++ B组 - 成绩统计
113 0