El codi de Luhn és un algorisme de validació utilitzat en números de targetes de crèdit i altres identificadors. Aquest algorisme permet detectar errors en la introducció de números mitjançant una suma de verificació. És a dir, l’algorisme genera un dígit que permet verificar que el nombre és correcte.
Per calcular el dígit de control cal seguir aquests passos:
Per exemple, el codi de Luhn del nombre 739875 es calcularia com:
7 | 3 | 9 | 8 | 7 | 5 | ||||||
7 | 3*2 | 9 | 8*2 | 7 | 5*2 | ||||||
6 | 16 | 10 | |||||||||
7 | 1 | ||||||||||
7 | + | 6 | + | 9 | + | 7 | + | 7 | + | 1 | = 37 |
El codi Luhn seria la quantitat que falta per tal que 37 sigui múltiple de 10, és a dir, 3.
Se’t demana implementar un programa que llegeixi un flux de naturals acabat en 0, calculi el dígit de control segons l’algorisme de Luhn per a cadascun dels números i imprimeixi cada número original amb el seu dígit de verificació afegit.
IMPORTANT!: Per resoldre aquest problema cal que implementis la funció codi_luhn que donat un nombre natural retorna el codi de Luhn d’aquest nombre.
Entrada
L’entrada consisteix en un flux de naturals acabat en 0
.
Sortida
Mostra cada número del flux amb el seu dígit de verificació afegit.
Observació
Per resoldre aquest exercici no es poden usar variables strings, taules ni vectors.
Input
10429 24 4242 1204 42042 422 421 1000420000 0
Output
104299 240 42424 12047 420422 4226 4218 10004200001
Input
0
Output
Input
1 2 3 4 5 6 7 8 9 10 1420 421 6422 7423 8424 94200 14201 24202 34203 44204 54205 64206 74207 84208 94209 0
Output
18 26 34 42 59 67 75 83 91 109 14209 4218 64220 74237 84244 942003 142018 242024 342030 442046 542050 642066 742072 842088 942094