En el lejano 1952, tres norteamericanos patentaron lo que termin´o llam´andose c´odigo de barras. Consiste en una t´ecnica para representar n´umeros (y, en menos ocasiones, letras) mediante una serie de l´ıneas verticales paralelas, con diferentes grosores y separaciones entre ellas. Si bien el primer uso sirvi´o para identificar de manera autom´atica los vagones de un ferrocarril, hoy los c´odigos de barras se utilizan en infinidad de lugares, siendo la catalogaci´on de productos la m´as habitual. La manera concreta de codificar mediante barras los n´umeros y las letras puede ser muy variada, lo que ha llevado a la aparici´on de diferentes est´andares. De todos ellos, el EAN (European Article Number ) resulta ser el m´as extendido. De ´este, hay principalmente dos formatos, que se diferencian en el ancho. Existe as´ı el llamado EAN-8, que codifica 8 n´umeros, y el EAN-13, que, naturalmente, codifica 13. 6583 9522 (a) EAN-8 8 414533 043847 (b) EAN-13 Figura 1: C´odigos de barras EAN El ´ultimo d´ıgito del c´odigo se utiliza para detecci´on de errores, y se calcula a partir de los dem´as. Para eso: Empezando por la derecha (sin contar el d´ıgito de control que se est´a calculando), se suman los d´ıgitos individuales, multiplicados por un factor: • Los d´ıgitos en posiciones impares (empezando a contar por la derecha salt´andonos el de control) se multiplican por 3. • Los d´ıgitos en posiciones pares se multiplican por 1. Por ejemplo, para el c´odigo EAN-8 de la figura la operaci´on a realizar es: 2 · 3 + 5 · 1 + 9 · 3 + 3 · 1 + 8 · 3 + 5 · 1 + 6 · 3 = 88 El d´ıgito de comprobaci´on es el n´umero que hay que sumar al resultado anterior para llegar a un valor m´ultiplo de 10. En el ejemplo de EAN-8, para llegar al m´ultiplo de 10 m´as cercano por encima del n´umero 88 hay que sumar 2 (y llegar al 90). Ten en cuenta que si la suma resulta ser ya m´ultiplo de 10, el d´ıgito de control ser´a 0. En EAN-13, los primeros d´ıgitos se usan adem´as para identificar al pa´ıs. A continuaci´on se indica una tabla (parcial) de esos c´odigos de pa´ıs. C´odigo Pa´ıs C´odigo Pa´ıs C´odigo Pa´ıs 0 EEUU 539 Irlanda 759 Venezuela 380 Bulgaria 560 Portugal 850 Cuba 50 Inglaterra 70 Noruega 890 India 3 Entrada La entrada estar´a formada por una serie de casos de prueba. Cada uno contendr´a una sucesi´on de n´umeros pertenecientes a un c´odigo de barras EAN-8 o EAN-13, incluyendo el d´ıgito de control. Si el n´umero de d´ıgitos es inferior a 8, se asumir´a que es un c´odigo EAN-8; si es superior a 8 pero inferior a 13, se asumir´a EAN-13. En ambos casos, se completar´an el resto de d´ıgitos colocando ceros a la izquierda. La entrada finalizar´a con el c´odigo especial 0. Salida Para cada caso de prueba, el programa indicar´a si el d´ıgito de control es correcto o no. Si lo es, escribir´a SI. En otro caso, escribir´a NO. Si el c´odigo de barras es EAN-13 y correcto, el programa escribir´a adem´as el pa´ıs al que pertenece utilizando la tabla anterior (separado por un espacio). Si el c´odigo no aparece en la tabla, el programa mostrar´a Desconocido. Ten cuidado al escribir los pa´ıses; deber´as respetar el uso de may´usculas y min´usculas de la tabla.
public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = sc.nextInt(); while (num != 0) { int [] array = new int[num]; for (int i = 0; i < num; i++) { array[i] = sc.nextInt(); } boolean esEAN8 = num < 8; boolean esEAN13 = num > 8; boolean paisOK = true; int suma = 0; for (int i = 0; i < num - 1; i++) { int factor; if (esEAN8) { factor = (i % 2 == 0) ? 3 : 1; }