首页 > 编程语言 >南沙C++信奥赛陈老师解一本通题 1942:【08NOIP普及组】ISBN号码

南沙C++信奥赛陈老师解一本通题 1942:【08NOIP普及组】ISBN号码

时间:2024-09-29 18:33:50浏览次数:6  
标签:ISBN 号码 1942 识别码 信奥赛 670 82162 分隔符

 【题目描述】

每一本正式出版的图书都有一个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是这样得到的:对0670082162这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

【提示】

【输入输出洋例2】

输入:

0-670-82162-0

输出:

0-670-82162-4

 

#include <iostream>
using namespace std;
int a[11];
int main()
{
	string s;
	cin>>s;
	int sum=0,cnt=1;
	for(int i=0;i<=12;i++)
	{
		if(s[i]=='-')
			continue;
		a[cnt++]=s[i]-'0';
	}
	for(int i=1;i<=9;i++)
		sum+=a[i]*i;
	string isbn=s.substr(0,12)+ ( sum%11<=9 ? to_string(sum%11): "X" );
	cout<<(s==isbn ? "Right":isbn );
	return 0;
}

 

标签:ISBN,号码,1942,识别码,信奥赛,670,82162,分隔符
From: https://www.cnblogs.com/nanshaquxinaosai/p/18440573

相关文章

  • 南沙C++信奥赛陈老师解一本通题 1973:【16NOIP普及组】买铅笔
    ​ 【题目描述】P老师需要去商店买n支铅笔作为小朋友们参加NOIP的礼物。她发现商店一共有3种包装的铅笔,不同包装内的铅笔数量有可能不同,价格也有可能不同。为了公平起见,P老师决定只买同一种包装的铅笔。商店不允许将铅笔的包装拆开,因此P老师可能需要购买超过n支铅笔才够给小......
  • 南沙C++信奥赛老师解一本通题1217:棋盘问题
    ​ 【题目描述】在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放 kk 个棋子的所有可行的摆放方案 CC。【输入】输入含有多组测试数据。每组数据......
  • 【IEEE出版(有ISBN号)、南京工业大学主办|EI会议|学生易中稿,超高录用率】2024年先进控制
    2024年先进控制系统与自动化技术国际学术会议(ACSAT2024)2024年11月15-17日  中国南京 大会网站:https://ais.cn/u/EvuyUf【投稿参会】截稿时间:以官网信息为准主办单位征稿主题论文出版所录用的论文将以会议论文集形式递交IEEE出版,已确定ISBN号。见刊后由出版......
  • 广州C++信奥赛老师解一本通题 1389:亲戚
    ​ 【题目描述】若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的某个人所在家族的人数。规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲戚。如果x,y是亲戚,那么x的亲戚都是y的亲戚,y的亲戚也都是x的亲戚。【输入】第一行:三个整数n,(n......
  • 【题解】【模拟】—— [NOIP2008 普及组] ISBN 号码
    【题解】【模拟】——[NOIP2008普及组]ISBN号码[NOIP2008普及组]ISBN号码题目描述输入格式输出格式输入输出样例输入#1输出#1输入#2输出#2提示1.思路解析2.AC代码[NOIP2008普及组]ISBN号码通往洛谷的传送门题目描述每一本正式出版的图书都有一个I......
  • 【南京工业大学主办 | IEEE出版,有ISBN号,往届均已见刊并完成EI, Scopus检索】第八届控
    重要信息大会网站:https://ais.cn/u/aQzEnm【投稿参会】时间地点:2024年11月1-3日| 中国·南京截稿时间:以官网信息为准出版信息:IEEE出版(ISBN:979-8-3315-2888-1)收录检索类型:IEEEXplore,EI,Scopus组织单位:征稿主题1)算法和数据结构2)人工智能3)电气系统4)......
  • 南沙信奥赛C++陈老师解一本通题: 1326:【例7.5】 取余运算(mod)
    ​【题目描述】【输入】输入b,p,k的值。【输出】【输入样例】2109【输出样例】2^10mod9=7 #include<iostream>#include<stdlib.h>usingnamespacestd;longlongb,p,k,ans=1;intmain(){ cin>>b>>p>>k; for(inti=1;i<=p;i++) { ans*=b;......
  • 南沙信奥赛C++陈老师解一本通题: 1171:大整数的因子
    ​ 【题目描述】已知正整数k满足2≤k≤9,现给出长度最大为30位的十进制非负整数c,求所有能整除c的k。【输入】一个非负整数c,c的位数≤30。【输出】若存在满足 c%k==0的k,从小到大输出所有这样的k,相邻两个数之间用单个空格隔开;若没有这样的k,则输出"none"。【输入样......
  • 信奥赛C++老师解一本通题:1182:合影效果
    ​【题目描述】小云和朋友们去爬香山,为美丽的景色所陶醉,想合影留念。如果他们站成一排,男生全部在左(从拍照者的角度),并按照从矮到高的顺序从左到右排,女生全部在右,并按照从高到矮的顺序从左到右排,请问他们合影的效果是什么样的(所有人的身高都不同)?【输入】第一行是人数nn(2≤n≤......
  • 信奥赛C++老师解一本通题:1938:【07NOIP普及组】奖学金
    ​【题目描述】某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金。期末,每个学生都有3门课的成绩:语文、数学、英语。先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规定学号小的同学排......