Thursday, January 05, 2012

Solucion a 12398 NumPuzz I [http://uva.onlinejudge.org] con Java

Solucion a 12398 NumPuzz I [http://uva.onlinejudge.org] con Java
El enunciado esta en el siguiente link enunciado

import java.util.Scanner;

/**
 * Problem B NumPuzz I [http://uva.onlinejudge.org]
 * 
 * @author BreakDark
 * @version 1.0 beta
 */
// ACEPTADO!!!
public class Main {
 public static void main(String[] args) {
  Scanner Lee;
  String linea;
  byte[][] mat;
  int i, j, k, caso;

  // AQUI INICIA EL PROGRAMA
  Lee = new Scanner(System.in);
  caso = 1;
  while (Lee.hasNextLine()) {
   linea = Lee.nextLine();
   mat = new byte[3][3];
   for (k = linea.length() - 1; k >= 0; k--) {
    switch (linea.charAt(k)) {
    case 'a':
     i = 0;
     j = 0;
     break;
    case 'b':
     i = 0;
     j = 1;
     break;
    case 'c':
     i = 0;
     j = 2;
     break;
    case 'd':
     i = 1;
     j = 0;
     break;
    case 'e':
     i = 1;
     j = 1;
     break;
    case 'f':
     i = 1;
     j = 2;
     break;
    case 'g':
     i = 2;
     j = 0;
     break;
    case 'h':
     i = 2;
     j = 1;
     break;
    default:
     i = 2;
     j = 2;
     break;
    }
    // modificamos la casilla
    if (mat[i][j] < 9)
     mat[i][j]++;
    else
     mat[i][j] = 0;
    // modificamos arriba
    if (i > 0) {
     if (mat[i - 1][j] < 9)
      mat[i - 1][j]++;
     else
      mat[i - 1][j] = 0;
    }
    // modificamos abajo
    if (i < 2) {
     if (mat[i + 1][j] < 9)
      mat[i + 1][j]++;
     else
      mat[i + 1][j] = 0;
    }
    // modificamos izquierda
    if (j > 0) {
     if (mat[i][j - 1] < 9)
      mat[i][j - 1]++;
     else
      mat[i][j - 1] = 0;
    }
    // modificamos derecha
    if (j < 2) {
     if (mat[i][j + 1] < 9)
      mat[i][j + 1]++;
     else
      mat[i][j + 1] = 0;
    }
   }
   System.out.println("Case #" + (caso++) + ":");
   for (i = 0; i < 3; i++) {
    for (j = 0; j < 3; j++) {
     System.out.print(mat[i][j]);
     if (j < 2)
      System.out.print(" ");
    }
    System.out.println();
   }
  }
 }
}

Solucion a 12397 Roman Numerals [http://uva.onlinejudge.org] con Java

Solucion a 12397 Roman Numerals [http://uva.onlinejudge.org] con Java
El enunciado esta en el siguiente link enunciado

import java.util.Scanner;

/**
 * Problem A Roman Numerals [http://uva.onlinejudge.org]
 * 
 * @author BreakDark
 * @version 1.0 beta
 */
// ACEPTADO!!!
public class Main {
 public static void main(String[] args) {
  Scanner Lee;
  short N;
  byte i;
  byte[][] valores = { { 0, 1, 2, 3, 3, 2, 3, 4, 5, 3 },
    { 0, 2, 4, 6, 4, 2, 4, 6, 8, 4 },
    { 0, 2, 4, 6, 5, 3, 5, 7, 9, 6 },
    { 0, 4, 8, 12, 0, 0, 0, 0, 0, 0 } };
  byte sum;

  // AQUI INICIA EL PROGRAMA
  Lee = new Scanner(System.in);
  while (Lee.hasNext()) {
   N = Lee.nextShort();
   i = 0;
   sum = 0;
   while (N > 0) {
    sum += valores[i][N % 10];
    N /= 10;
    i++;
   }
   System.out.println(sum);
  }
 }
}

Solucion a 10300 - Ecological Premium [http://uva.onlinejudge.org] con Java

Solucion a 10300 - Ecological Premium [http://uva.onlinejudge.org] con Java
El enunciado esta en el siguiente link enunciado

import java.util.Scanner;

/**
 * 10300 - Ecological Premium [http://uva.onlinejudge.org]
 * 
 * @author BreakDark
 * @version 1.0 beta
 */
// ACEPTADO!!! xD
public class Main {
 public static void main(String[] args) {
  Scanner Lee; // para leer los datos de entrada
  byte n; // numero de casos de prueba
  byte f; // numero de granjas
  long suma; // para sumar los premios
  int a; // para el tamanio de la granja en m2

  // AQUI INICIA EL PROGRAMA
  Lee = new Scanner(System.in);
  while (Lee.hasNext()) {
   n = Lee.nextByte();
   while (n-- > 0) {
    f = Lee.nextByte();
    suma = 0;
    while (f-- > 0) {
     a = Lee.nextInt();
     Lee.nextInt();
     suma += (a * Lee.nextInt());
    }
    System.out.println(suma);
   }
  }
 }
}

Solucion a 10071 - Back to High School Physics [http://uva.onlinejudge.org] con Java

Solucion a 10071 - Back to High School Physics [http://uva.onlinejudge.org] con Java
El enunciado esta en el siguiente link enunciado

import java.util.Scanner;

/**
 * 10071 - Back to High School Physics [http://uva.onlinejudge.org]
 * 
 * @author BreakDark
 * @version 1.1 beta
 */
// ACEPTADO!!!
public class Main {
 public static void main(String[] args) {
  Scanner Lee; // para leer los datos de entrada
  byte v; // para la velocidad
  short t; // para el tiempo

  // AQUI INICIA EL PROGRAMA
  Lee = new Scanner(System.in);
  while (Lee.hasNext()) {
   v = Lee.nextByte();
   t = Lee.nextShort();
   System.out.println(v * 2 * t);
  }
 }
}

Solucion a 10055 - Hashmat the brave warrior [http://uva.onlinejudge.org] con Java

Solucion a 10055 - Hashmat the brave warrior [http://uva.onlinejudge.org] con Java
El enunciado esta en el siguiente link enunciado

import java.util.Scanner;

/**
 * 10055 - Hashmat the brave warrior [http://uva.onlinejudge.org]
 * 
 * @author BreakDark
 * @version 1.1 beta
 */
// ACEPTADO!!! xD
public class Main {
 public static void main(String[] args) {
  Scanner Lee; // para leer los datos de entrada
  long numH, numOP; // soldados de Hashman y del opositor

  // AQUI INICIA EL PROGRAMA
  Lee = new Scanner(System.in);
  while (Lee.hasNext()) {
   numH = Lee.nextLong();
   numOP = Lee.nextLong();
   System.out.println(Math.abs(numOP - numH));
  }
 }
}

Solucion a 10035 - Primary Arithmetic [http://uva.onlinejudge.org] con Java

Solucion a 10035 - Primary Arithmetic [http://uva.onlinejudge.org] con Java
El enunciado esta en el siguiente link enunciado

import java.util.Scanner;

/**
 * 10035 - Primary Arithmetic [http://uva.onlinejudge.org]
 * 
 * @author BreakDark
 * @version 1.1 beta
 */
// ACEPTADO!!! xD
public class Main {
 public static void main(String[] args) {
  Scanner Lee; // para leer los datos de entrada
  String num1, num2; // para los numeros a asumar
  byte numAcarreo; // para contar los acarreos
  byte aux; // para las sumas temporales
  int i, j; // para los bucles

  // AQUI INICIA EL PROGRAMA
  Lee = new Scanner(System.in);
  num1 = Lee.next();
  num2 = Lee.next();
  while (!num1.equals("0") || !num2.equals("0")) {
   i = num1.length() - 1;
   j = num2.length() - 1;
   aux = 0;
   numAcarreo = 0;
   while (i >= 0 && j >= 0) {
    if ((num1.charAt(i) - '0') + (num2.charAt(j) - '0') + aux > 9) {
     aux = 1;
     numAcarreo++;
    } else
     aux = 0;
    i--;
    j--;
   }
   // si el primer numero termino de evaluarse
   if (i >= 0) {
    while (i >= 0) {
     if ((num1.charAt(i) - '0') + aux > 9) {
      aux = 1;
      numAcarreo++;
     } else
      aux = 0;
     i--;
    }
   } else if (j >= 0) {
    while (j >= 0) {
     if ((num2.charAt(j) - '0') + aux > 9) {
      aux = 1;
      numAcarreo++;
     } else
      aux = 0;
     j--;
    }
   }
   // mostramos el resultado
   if (numAcarreo > 1)
    System.out.println(numAcarreo + " carry operations.");
   else if (numAcarreo == 1)
    System.out.println("1 carry operation.");
   else
    System.out.println("No carry operation.");
   num1 = Lee.next();
   num2 = Lee.next();
  }
 }
}

Solucion a 10018 - Reverse and Add [http://uva.onlinejudge.org] con Java

Solucion a 10018 - Reverse and Add [http://uva.onlinejudge.org] con Java
El enunciado esta en el siguiente link enunciado

import java.util.Scanner;

/**
 * 10018 - Reverse and Add [http://uva.onlinejudge.org]
 * 
 * @author BreakDark
 * @version 1.0 beta
 */
// ACEPTADO!!! xD
public class Main {
 public static void main(String[] args) {
  Scanner Lee; // para leer los datos de entrada
  int N; // el numero de casos de prueba
  long num1, num2; // para verificar si es palindrome
  int numIteraciones; // para contar las iteraciones

  // AQUI INICIA EL PROGRAMA
  Lee = new Scanner(System.in);
  N = Lee.nextInt();
  while (N-- > 0) {
   numIteraciones = 0;
   num1 = Lee.nextLong();
   num2 = invertir(num1);
   while (num1 != num2) {
    num1 += num2;
    num2 = invertir(num1);
    numIteraciones++;
   }
   System.out.println(numIteraciones + " " + num1);
  }
 }

 /**
  * Funcion que invierte los dogitos de un numero
  * 
  * @param num
  *            el numero a invertir
  * @return el numero ya invertido
  */
 private static long invertir(long num) {
  String anterior = Long.toString(num);
  String nuevoNum = "";
  for (int i = anterior.length() - 1; i >= 0; i--)
   nuevoNum += anterior.charAt(i);
  return Long.parseLong(nuevoNum);
 }
}

Solucion a 494 - Kindergarten Counting Game [http://uva.onlinejudge.org] con Java

Solucion a 494 - Kindergarten Counting Game [http://uva.onlinejudge.org] con Java
El enunciado esta en el siguiente link enunciado

import java.util.Scanner;
import java.util.StringTokenizer;

/**
 * 494 - Kindergarten Counting Game [http://uva.onlinejudge.org]
 * 
 * @author BreakDark
 * @version 1.0 beta
 */
// ACEPTADO!!! xD
public class Main {
 public static void main(String[] args) {
  Scanner Lee; // para leer los datos de entrada
  String linea, nuevaLinea; // para procesar una linea
  int i; // para los bucles

  // AQUI INICIA EL PROGRAMA
  Lee = new Scanner(System.in);
  while (Lee.hasNextLine()) {
   linea = Lee.nextLine();
   // eliminamos caracteres que no nos interezan
   nuevaLinea = "";
   for (i = 0; i < linea.length(); i++) {
    if ((linea.charAt(i) >= 'A' && linea.charAt(i) <= 'Z')
      || (linea.charAt(i) >= 'a' && linea.charAt(i) <= 'z'))
     nuevaLinea += linea.charAt(i);
    else
     nuevaLinea += ' ';
   }
   // contamos las palabras
   System.out.println((new StringTokenizer(nuevaLinea)).countTokens());
  }
 }
}

Solucion a 113 - Power of Cryptography [http://uva.onlinejudge.org] con Java

Solucion a 113 - Power of Cryptography [http://uva.onlinejudge.org] con Java
El enunciado esta en el siguiente link enunciado

import java.math.BigInteger;
import java.util.Scanner;

/**
 * 113 - Power of Cryptography [http://uva.onlinejudge.org]
 * 
 * @author BreakDark
 * @version 2.0 beta
 */
// ACEPTADO!!! xD
public class Main {
 public static void main(String[] args) {
  Scanner Lee; // para leer los datos de entrada
  short n; // para el exponente
  BigInteger p; // para el p grande

  // AQUI INICIA EL PROGRAMA
  Lee = new Scanner(System.in);
  while (Lee.hasNext()) {
   n = Lee.nextShort();
   p = Lee.nextBigInteger();
   System.out.println(Math.round(Math.pow(Math.E,
     (Math.log(p.doubleValue()) / n))));
  }
 }
}

Solucion a 102 - Ecological Bin Packing [http://uva.onlinejudge.org]

Solucion a 102 - Ecological Bin Packing [http://uva.onlinejudge.org]
El enunciado esta en el siguiente link enunciado

import java.util.Scanner;

/**
 * 102 - Ecological Bin Packing [http://uva.onlinejudge.org]
 *
 * @author BreakDark
 * @version 1.0 beta
 */
// ACEPTADO!!! xD
public class Main {
    public static void main(String[] args) {
        Scanner Lee; // Para leer los datos de entrada
        int[][] botellas = new int[3][3]; // para las botellas
        byte[][] combinaciones = { { 0, 1, 2 }, { 0, 2, 1 }, { 1, 0, 2 },
                { 1, 2, 0 }, { 2, 0, 1 }, { 2, 1, 0 } };
        String[] combiColores = { "BCG", "BGC", "CBG", "CGB", "GBC", "GCB" }; // combinacion
                                                                                // de
                                                                                // colores
        byte i, j; // para los bucles
        long may, suma; // para hallar la combinacion que necesita menos cambios
        byte indCom; // para la mejor combinacion

        // AQUI INICIA EL PROGRAMA
        Lee = new Scanner(System.in);
        while (Lee.hasNext()) {
            // leemos los datos
            for (i = 0; i < 3; i++) {
                botellas[i][0] = Lee.nextInt();
                botellas[i][2] = Lee.nextInt();
                botellas[i][1] = Lee.nextInt();
            }
            // buscamos la mejor combinacion
            may = 0;
            indCom = 0;
            for (i = 0; i < 6; i++) {
                suma = botellas[0][combinaciones[i][0]]
                        + botellas[1][combinaciones[i][1]]
                        + botellas[2][combinaciones[i][2]];
                if (suma > may) {
                    may = suma;
                    indCom = i;
                }
            }
            // sumamos todos excepto los indices de la mejor combinacion
            suma = 0;
            for (i = 0; i < 3; i++)
                for (j = 0; j < 3; j++) {
                    if (j != combinaciones[indCom][i])
                        suma += botellas[i][j];
                }
            // mostramos el resultado
            System.out.println(combiColores[indCom] + " " + suma);
        }
    }
}