ISBN(International Standard Book Number)
是一種世界共通的書籍編碼方法,世界上任何一本書籍之出版,皆有著唯一的一組ISBN碼。
此碼由十個位數組成,每一位數可以為0~9的任何一個數字,或者為X,代表此位數為10;
試寫出一個程式來判斷所輸入的ISBN碼是否為合法的。其判斷方法如下,首先,將此ISBN
碼的十個位數分開,自左而右依次為第一位數,第二位數至第十位數,接著進行第一次的
累加,使得第二位數成為第一位數到第二位數的和,第三位數為第一位數到第三位數的累加和,第十位數為第一位數到第十位數的累加和;進行完第一次的累加和後,接著再依照相同之方法進行第二次的累加動作,我們稱此時最後所求得之累加和為此ISBN碼之識別碼,倘若此識別碼為11的倍數,則此ISBN碼為合法的,故請輸出YES,反之請輸出NO。注意:為便於識別,在此ISBN碼中可能會插入'-'符號,此符號不具任何意義,可以直接忽略它。例如,若輸入之ISBN碼為013-162-959X,則其運算之過成如下表所示:
ISBN碼 |
0 |
1 |
3 |
1 |
6 |
2 |
9 |
5 |
9 |
10(X) |
第一次累加和 |
0 |
1 |
4 |
5 |
11 |
13 |
22 |
27 |
36 |
46 |
第二次累加和 |
0 |
1 |
5 |
10 |
21 |
34 |
56 |
83 |
119 |
165 |
經由計算可得其識別碼為165,乃是11之倍數,故此為一合法之ISBN碼,因此應該要輸出YES於螢幕上。
輸入資料 |
輸出資料 |
0-89237-010-6 |
0-89237-010-6 is correct. |
0-8306-3637-4 |
0-8306-3637-4 is correct. |
0-06-017758-6 |
0-06-017758-6 is correct. |
1-56884-030-6 |
1-56884-030-6 is correct. |
This_is_garbage |
This_is_garbage is incorrect. |
0-8230-2571-3 |
0-8230-2571-3 is correct. |
0-345-31386-0 |
0-345-31386-0 is correct. |
0-671-88858-7 |
0-671-88858-7 is correct. |
0-8104-5687-7 |
0-8104-5687-7 is correct. |
0-671-74119-5 |
0-671-74119-5 is correct. |
0-812-52030-0 |
0-812-52030-0 is correct. |
0-345-24865-1-150 |
0-345-24865-1-150 is incorrect. |
0-452-26740-4 |
0-452-26740-4 is correct. |
0-13-139072-4 |
0-13-139072-4 is correct. |
0-1315-2447-X |
0-1315-2447-X is correct. |
0abc-13dfasdfa-162959-X |
0abc-13dfasdfa-162959-X is incorrect. |
0-13-162959-X |
0-13-162959-X is correct. |
0-13-162958-X |
0-13-162959-X is incorrect. |
0-89237-010-6 |
0-89237-010-6 is correct. |
0-89237-010 -6 |
0-89237-010 -6 is incorrect. |
-------0-89237-010-6-------- |
-------0-89237-010-6-------- is correct. |
0-89237-010-6XXXX |
0-89237-010-6XXXX is incorrect. |
0-89237-010-6-150 |
0-89237-010-6-150 is incorrect. |
0-89237-010- 6 TEST |
0-89237-010- 6 TEST is incorrect. |
XX-0000000000-XX |
XX-0000000000-XX is incorrect. |
XX000000XXX0000XXXXX |
XX000000XXX0000XXXXX is incorrect. |
1234567890 |
1234567890 is incorrect. |
0-89237-010-6 |
0-89237-010-6 is correct. |
0-89237-010-6 TEST |
0-89237-010-6 TEST is incorrect. |