Monday, January 22, 2018

Solución al problema: 10783 - Odd Sum con Java

Para ver el link del problema Click aqui
import java.util.BitSet;
import java.util.Scanner;

/**
 * Solución a 10783 - Odd Sum [https://uva.onlinejudge.org/]
 *
 * @author BreakDark (Jhonny Monrroy)
 * @version 1.0 24 nov. de 2017
 */
// Accepted!!! xD
public class Main {
 public static void main(String[] args) {
  Scanner Lee = new Scanner(System.in);
  int t, a, b, i, j, sum;
  BitSet impares = new BitSet(101);
  for (i = 1; i <= 100; i += 2)
   impares.set(i);

  // AQUI INICIA EL PROGRAMA
  t = Lee.nextInt();
  for (i = 1; i <= t; i++) {
   a = Lee.nextInt();
   b = Lee.nextInt();
   sum = 0;
   for (j = a; j <= b; j++) {
    if (impares.get(j))
     sum += j;
   }
   System.out.println("Case " + i + ": " + sum);
  }
  Lee.close();
 }
}

Solución al problema: 488 - Triangle Wave con Java

Para ver el link del problema Click aqui
import java.util.Scanner;

/**
 * 488 - Triangle Wave [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
        int numcasos; // para el numero de casos
        byte amplitud; // para la amplitud
        int frecuencia; // frecuencia
        int i; // para los bucles
        // vector de ondas
        String[] vec = {"", "1", "1\n22\n1", "1\n22\n333\n22\n1", "1\n22\n333\n4444\n333\n22\n1", "1\n22\n333\n4444\n55555\n4444\n333\n22\n1",
                "1\n22\n333\n4444\n55555\n666666\n55555\n4444\n333\n22\n1",
                "1\n22\n333\n4444\n55555\n666666\n7777777\n666666\n55555\n4444\n333\n22\n1",
                "1\n22\n333\n4444\n55555\n666666\n7777777\n88888888\n7777777\n666666\n55555\n4444\n333\n22\n1",
                "1\n22\n333\n4444\n55555\n666666\n7777777\n88888888\n999999999\n88888888\n7777777\n666666\n55555\n4444\n333\n22\n1"};

        // AQUI INICIA EL PROGRAMA
        Lee = new Scanner(System.in);
        numcasos = Lee.nextInt();
        while(numcasos-- > 0){
            amplitud = Lee.nextByte();
            frecuencia = Lee.nextInt();
            for(i = 0; i < frecuencia; i++){
                System.out.println(vec[amplitud]);
                if(i < frecuencia - 1 || numcasos > 0)
                    System.out.println();
            }
        }
    }
}

Solución al problema: 106 - Fermat vs Pythagoras con Java

Para ver el link del problema Click aqui
import java.util.BitSet;
import java.util.Scanner;

/**
 * 106 - Fermat vs. Pythagoras [http://uva.onlinejudge.org]
 * 
 * @author BreakDark
 * @version 3.0 beta
 */
// ACEPTADO!!! xD
public class Main {
 public static void main(String[] args) {
  Scanner Lee; // Para leer los datos de entrada
  int N; // para el N a leer

  // AQUI INICIA EL PROGRAMA!!!
  Lee = new Scanner(System.in);
  while(Lee.hasNext()){
   N = Lee.nextInt();
   calcula(N);
  }
 }
 /**
  * Procedimiento que realiza todo el trabajo
  * 
  * @param N
  *            el numero a procesar
  */
 private static void calcula(int N) {
  int cont = 0;
  int numUsados = 0;
  int r, s, i, x, y, z;
  BitSet numeros = new BitSet(N + 1);

  for(r = 2; r * r <= N; r++)
   for(s = 1; s < r && r * r + s * s <= N; s++){
    x = r * r - s * s;
    y = 2 * r * s;
    z = r * r + s * s;
    if(mcd(x, y) == 1){
     cont++;
     for(i = 1; z * i <= N; i++){
      if(!numeros.get(x * i)){
       numUsados++;
       numeros.set(x * i);
      }
      // para y
      if(!numeros.get(y * i)){
       numUsados++;
       numeros.set(y * i);
      }
      // para z
      if(!numeros.get(z * i)){
       numUsados++;
       numeros.set(z * i);
      }
     }
    }
   }
  System.out.println(cont + " " + (N - numUsados));
 }
 /**
  * Funcion que encuentra el MCD de dos enteros basado en el slgoritmo de
  * euclides
  * 
  * @param a
  *            entero a evaluar el MCD
  * @param b
  *            entero a evaluar el MCD
  * @return el MCD de a y b
  */
 private static int mcd(int a, int b) {
  int r;
  if(b > a){
   r = a;
   a = b;
   b = r;
  }
  r = b;
  while(b > 0){
   r = a % b;
   a = b;
   b = r;
  }
  return a;
 }
}