#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.