lunes, 31 de marzo de 2014

Programame Regional 2013: G Súmale uno

S umale uno
Cuando escribimos un n umero en decimal, usamos como dí gitos los valores del 0 al 9. La posici ón de cada dí gito indica el peso que tiene en el valor total del n úmero.
Los números escritos en hexadecimal, por su parte, utilizan dí gitos del 0 al 15. Para representar los que superan el 9, necesitamos sí mbolos nuevos. Para eso, se utilizan las letras de la A a la F, de manera que, en hexadecimal, el n umero 9 es seguido por el A, o el BF por C0.
>Eres capaz de dar el siguiente n úmero hexadecimal a uno dado?

Entrada
La entrada estar a compuesta de m últiples casos de prueba. Cada uno consistir á en un n úmero escrito
en notaci ón hexadecimal, hasta un m áximo de 100 d í gitos. Ninguno de los casos de prueba contendrá ceros sup erflúos a la izquierda, y usarán, en su caso, letras may úsculas.
Un caso de prueba con la cadena FIN marca el nal.



Salida
Para cada caso de prueba se mostrar á una lí nea en la que aparecer á el n úmero siguiente al dado, escrito en notaci ón hexadecimal sin ceros sup érfluos a la izquierda y con las letras en may úscula.

Entrada de ejemplo
9
12
FF
FIN
Salida de ejemplo
A
13
100

package programamecuadernilloregional2013gsumaleunog;
import java.util.Scanner;
/**
*
* @author juan
*/
public class ProgramameCuadernilloRegional2013GSumaleUnoG {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Scanner leo = new Scanner(System.in);
        String cadena,salida;
      
        String hexa="0123456789ABCDEF";
        int pos;
      
      
        cadena=leo.nextLine();
        while (!cadena.equalsIgnoreCase("FIN")) {
            pos=cadena.length()-1;
            salida="";
            while (pos>=0 && cadena.charAt(pos)=='F') --pos;
            if (pos==-1)
            {   salida="1";
                for (int i = 0; i < cadena.length(); i++) {
                    salida+="0";
                }
            }
            else
            {
                salida=cadena.substring(0,pos);
                salida+=hexa.charAt(hexa.indexOf(cadena.charAt(pos))+1);
                for (int i = pos+1; i < cadena.length(); i++) {
                    salida+="0";
                }
            }
            System.out.println(salida);
            cadena=leo.nextLine();
        }
  
    }
}

No hay comentarios: