PROG0170 - ISBN
In the ISBN-10 (International Standard Book Numbering) system that was used until the end of 2006, each book was assigned a unique 10-digit code. The first nine digits uniquely identify the book itself, whereas the last digit merely serves as a check digit to detect invalid ISBN-10 codes.
If $x_1, \ldots, x_9$ represent the first nine digits of an ISBN-10 code, the check digit $x_{10}$ is calculated as $$x_{10} = (x_1 + 2x_2 + 3x_3 + 4x_4 + 5x_5 + 6x_6 + 7x_7 + 8x_8 + 9x_9)\!\!\!\!\mod{11}$$ As a result, $x_{10}$ always takes a value in between 0 and 10.
You are asked to write a program that reads a series of integers and decides whether these numbers correspond to valid ISBN-10 codes. As long as the word stop is not given as the first digit of the next ISBN-10 code, a new series of ten integers should be read and processed. Try to avoid any unnecessary repetition of source code to solve this problem.
Input
A series of ISBN-10 codes that ends in the word stop. Each ISBN-10 code is given as ten integers $x_1, \ldots, x_{10}$ ($0 \leq x_1, \ldots, x_{9} \leq 9$), each on a separate line.
Output
For each ISBN-10 code given, the word OK should be printed if the integers correspond to a valid ISBN-10 code, and the word WRONG should be printed if the integers correspond to an invalid ISBN-10 code.
Example
Input:
9 9 7 1 5 0 2 1 0 0 9 9 7 1 5 0 2 1 0 8 stop
Output:
OK WRONG
Binnen het ISBN-10 (International Standard Book Numbering) systeem dat tot eind 2006 gebruikt werd, kreeg elk boek een unieke code toegewezen die bestaat uit 10 cijfers. De eerste 9 daarvan geven informatie over het boek zelf, terwijl het laatste louter een controlecijfer is dat dient om foutieve ISBN-10 codes te detecteren.
Indien $x_1, \ldots, x_9$ de eerste 9 cijfers van een ISBN-10 code voorstellen, dan wordt het controlecijfer $x_{10}$ als volgt berekend: $$x_{10} = (x_1+ 2x_2+ 3x_3+ 4x_4+ 5x_5+ 6x_6+ 7x_7+ 8x_8+ 9x_9)\!\!\!\!\mod{11}$$ $x_{10}$ kan m.a.w. de waarden 0 tot en met 10 aannemen.
Gevraagd wordt om een programma te schrijven dat een reeks ISBN-10 codes inleest en bepaalt of ze al dan niet corresponderen met geldige ISBN-10 codes. De reeks ISBN-10 codes wordt afgesloten door een regel die enkel het woord stop bevat. Zorg ervoor dat er geen overbodige herhaling van broncodefragmenten voorkomt in je oplossing.
Invoer
De invoer bestaat uit een reeks ISBN-10 codes, afgesloten door een regel die enkel het woord stop bevat. De tien cijfers van elke ISBN-10 code wordt uitgeschreven als een opeenvolging van tien natuurlijke getallen $x_1, \ldots, x_{10}$ ($0 \leq x_1, \ldots, x_{9} \leq 9$), elk op een afzonderlijke regel.
Uitvoer
Schrijf voor elke ISBN-10 code één regel uit die het woord OK bevat als de cijfers corresponderen met een geldige ISBN-10 code of die het woord FOUT bevat als de cijfers corresponderen met een foutieve ISBN-10 code.
Voorbeeld
Invoer:
9 9 7 1 5 0 2 1 0 0 9 9 7 1 5 0 2 1 0 8 stop
Uitvoer:
OK FOUT
Added by: | Peter Dawyndt |
Date: | 2011-10-03 |
Time limit: | 10s |
Source limit: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Languages: | PY_NBC |
Resource: | None |