#4332. C++ L14 13位ISBN号码的校验码
C++ L14 13位ISBN号码的校验码
C++ L14 13位ISBN号码的校验码(30分)
题目名称:13位ISBN号码的校验码
题目描述:
每一本正式出版的书的封底都有一串号码,如ISBN 978-7-121-41489-3,它叫做"国际标准书号"(International Standard Book Number,缩写为ISBN),用来唯一代表一本书。
从2007年1月1日起,国际标准书号升级为13位,这13位数字可以分为5个区(为提高可读性,用连字符“-”将5个区隔开),从左往右,5个区的含义依次如下:
(1)EAN号码段,一共包含3位数字。
(2)国家、语言或区位代码,长度为1-5位,7表示中国大陆。
(3)出版社代码,长度为2-7位,用以识别书籍的出版社。
(4)出版序号,由出版者自行编配,以识别书目或版本。
(5)校验码,一位数字,用以核对书号是否正确。
其中,书号校验码的计算步骤如下:
1、前12个数字交替地乘以权数1和3;
2、所有积相加;
3、总和除以10,得出余数;
4、如果余数为0,则校验码为0。否则用10减去余数,所得的数字就是校验码。
例如:书号为978-7-121-41489-3,校验码3的计算步骤为:
1、9*1、7*3、8*1、7*3、1*1、2*3、1*1、4*3、1*1、4*3、8*1、9*3
2、9*1+7*3+8*1+7*3+1*1+2*3+1*1+4*3+1*1+4*3+8*1+9*3 = 127
3、127%10 = 7
4、10-7 = 3
请编写程序判断输入的ISBN号码中校验码是否正确,如果正确,输出yes。否则输出no。
输入:
一行,是一个不含空格字符的字符序列,表示一本书的ISBN号码(题目数据保证输入符合ISBN号码的格式要求)。
输出:
一个字符串,如果输入ISBN号码中校验码正确,输出yes;否则输出no。
输入样例1:
978-7-121-41489-3
输出样例1:
yes
输入样例2:
978-7-10-012321-2
输出样例2:
no
Limitation
1s, 1024KiB for each test case.