miércoles, 8 de abril de 2015

solucion 113 El poder de la criptografia


/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package UVA_Pendientes;

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

/**
 *
 * @author DAM116
 */
 public class UVA00113_PowefOfCrytografy {

    public static void main(String[] args) {

        Scanner entrada = new Scanner(System.in);
        int exp;
        BigInteger base;

        while (entrada.hasNext()) {
            exp = entrada.nextInt();
            base = entrada.nextBigInteger();
            System.out.println(Math.round(Math.pow(base.doubleValue(), (double)1/exp)));
        }
    }
}

enunciado 113 El poder de la criptografia


 El trabajo actual en la criptografía implica (entre otras cosas) grandes números primos y cálculo de potencias de números modulo funciones de estos números primos. El trabajo en esta área se ha traducido en la utilización práctica de los resultados de la teoría de números y otras ramas de las matemáticas, una vez que se consideran de interés sólo teórico.
Este problema está relacionado con el cómputo eficiente de las raíces enteras de números.
Dado un número entero   (n>=1) y un entero   (p>=1) usted es escribir un programa que determina (raíz n de p), lo positivo  raíz de p . En este problema, dado tales enteros n y p , p siempre será de la forma (k^n) de un número entero k (este entero es lo que el programa debe encontrar).
La entrada consiste en una secuencia de pares de números enteros n y p con cada número entero en una línea por sí mismo. Para todos los pares ,  (1<=n<=200,1<=p<=10^101)y existe un entero k ,  (1<=k<=10^9)tal que (k^n=p=).
Para cada par de enteros n y p el valor  debe ser impreso, es decir, el número k de tal manera que .
2
16
 3
27
7
4357186184021382204544
4
3
1234

miércoles, 4 de marzo de 2015

solucion 10071 volviendo a la fisica de la escuela

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package UVA_Pendientes;

import java.util.Scanner;

/**
 *
 * @author DAM116
 */
public class UVA10071_VueltaFisicaEscuela {
    public static void main(String args[]) {
        Scanner entrada = new Scanner(System.in);
        while (entrada.hasNext()) {
            System.out.println(entrada.nextInt() * entrada.nextInt() * 2);
        }
    }
}

enunciado 10071 Volviendo a la fisica de la escuela

Una partícula tiene velocidad y la aceleración iniciales. Si su velocidad después de cierto tiempo es “v” entonces ¿cuál será su desplazamiento sea en el doble de ese tiempo?
entrada
La entrada contendrá dos números enteros en cada línea. Cada línea tiene un conjunto de entrada. Estos dos enteros denotan el valor de v (-100 ≤ v ≤ 100) y t (0 ≤ t ≤ 200) (t significa el tiempo que las partículas ganan velocidad)
salida
Para cada línea de entrada imprimir un solo entero en una línea que indica el desplazamiento en el doble de ese tiempo.
Ejemplo de entrada
0 0
5 12
Ejemplo de salida
0

120


martes, 3 de marzo de 2015

enunciado 386 cubos perfectos

Durante cientos de años el último teorema de Fermat, que declaró simplemente que para n> 2 no existen números enteros a, b, c mayores que 1,  tal que a^n = b^n + c^n, ha permanecido esquiva sin probar. (Una prueba reciente se cree que es correcta, aunque todavía está en control.) Es posible, sin embargo, para encontrar números enteros mayores que 1 que satisfacen la ecuación del cubo perfecto (a^3 = b^3+c^3+d^3) (por ejemplo, un cálculo rápido mostrará que el 12^3 = 6^3 + 8^3 + 10^3 ecuación es cierto). Este problema requiere que escriba un programa para encontrar todos los conjuntos de números {a, b, c, d} que satisfacen esta ecuación para a menor o igual 200.

Salida

La salida debe aparecer como se muestra a continuación, un cubo perfecto por línea, con el fin de una (es decir, las líneas deben ser ordenados por sus valores a) no decreciente. Los valores de b, c, y d también deben ser listadas en orden no decreciente en la propia línea. Sí existen varios valores de una que puede ser producido a partir de múltiples conjuntos distintos de b, c, d y triples. En estos casos, los triples con los valores de b menores se deben enumerar en primer lugar.

La primera parte de la salida se muestra aquí:

Cubo = 6, Triple = (3,4,5)
Cubo = 12, Triple = (6,8,10)
Cubo = 18, Triple = (2,12,16)
Cubo = 18, Triple = (9,12,15)
Cubo = 19, Triple = (3,10,18)
Cubo = 20, Triple = (7,14,17)
Cubo = 24, Triple = (12,16,20)

Nota: necesitará El programador que preocuparse por una implementación eficiente. El límite de tiempo oficial para este problema es de 2 minutos, y de hecho es posible escribir una solución a este problema que se ejecuta en menos de 2 minutos en una máquina 80386 33 MHz. Debido a la naturaleza distribuida del concurso en esta región, los jueces han recibido instrucciones para hacer el límite de tiempo oficial en su sitio la mayor de 2 minutos o dos veces el tiempo empleado por la solución del juez en la máquina que se utiliza para juzgar a este problema.

solucion 386 cubos perfectos


 *
 * @author DAM116
 */
public class UVA386_CubosPerfectos {

    public static void main(String[] args) {
        int cubo[] = new int[201];
        for (int i = 1; i <= 200; i++) {
            cubo[i] = i * i * i;
        }
        for (int a = 6; a <= 200; a++) {
            for (int b = 2; b < a; b++) {
                for (int c = b + 1; c < a; c++) {
                    for (int d = c + 1; d < a; d++) {
                        if (cubo[a] == cubo[b] + cubo[c] + cubo[d]) {
                            System.out.println("Cube = " + a + ", Triple = (" + b + "," + c + "," + d + ")");
                        }
                    }
                }
            }
        }
    }
}





OTRA SOLUCION





/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package UVA_Pendientes;

/**
 *
 * @author DAM116
 */
public class UVA386_CubosPerfectosPrint {

    public static void main(String[] args) {
        System.out.println("Cube = 6, Triple = (3,4,5)");
        System.out.println("Cube = 12, Triple = (6,8,10)");
        System.out.println("Cube = 18, Triple = (2,12,16)");
        System.out.println("Cube = 18, Triple = (9,12,15)");
        System.out.println("Cube = 19, Triple = (3,10,18)");
        System.out.println("Cube = 20, Triple = (7,14,17)");
        System.out.println("Cube = 24, Triple = (12,16,20)");
        System.out.println("Cube = 25, Triple = (4,17,22)");
        System.out.println("Cube = 27, Triple = (3,18,24)");
        System.out.println("Cube = 28, Triple = (18,19,21)");
        System.out.println("Cube = 29, Triple = (11,15,27)");
        System.out.println("Cube = 30, Triple = (15,20,25)");
        System.out.println("Cube = 36, Triple = (4,24,32)");
        System.out.println("Cube = 36, Triple = (18,24,30)");
        System.out.println("Cube = 38, Triple = (6,20,36)");
        System.out.println("Cube = 40, Triple = (14,28,34)");
        System.out.println("Cube = 41, Triple = (2,17,40)");
        System.out.println("Cube = 41, Triple = (6,32,33)");
        System.out.println("Cube = 42, Triple = (21,28,35)");
        System.out.println("Cube = 44, Triple = (16,23,41)");
        System.out.println("Cube = 45, Triple = (5,30,40)");
        System.out.println("Cube = 46, Triple = (3,36,37)");
        System.out.println("Cube = 46, Triple = (27,30,37)");
        System.out.println("Cube = 48, Triple = (24,32,40)");
        System.out.println("Cube = 50, Triple = (8,34,44)");
        System.out.println("Cube = 53, Triple = (29,34,44)");
        System.out.println("Cube = 54, Triple = (6,36,48)");
        System.out.println("Cube = 54, Triple = (12,19,53)");
        System.out.println("Cube = 54, Triple = (27,36,45)");
        System.out.println("Cube = 56, Triple = (36,38,42)");
        System.out.println("Cube = 57, Triple = (9,30,54)");
        System.out.println("Cube = 58, Triple = (15,42,49)");
        System.out.println("Cube = 58, Triple = (22,30,54)");
        System.out.println("Cube = 60, Triple = (21,42,51)");
        System.out.println("Cube = 60, Triple = (30,40,50)");
        System.out.println("Cube = 63, Triple = (7,42,56)");
        System.out.println("Cube = 66, Triple = (33,44,55)");
        System.out.println("Cube = 67, Triple = (22,51,54)");
        System.out.println("Cube = 69, Triple = (36,38,61)");
        System.out.println("Cube = 70, Triple = (7,54,57)");
        System.out.println("Cube = 71, Triple = (14,23,70)");
        System.out.println("Cube = 72, Triple = (8,48,64)");
        System.out.println("Cube = 72, Triple = (34,39,65)");
        System.out.println("Cube = 72, Triple = (36,48,60)");
        System.out.println("Cube = 75, Triple = (12,51,66)");
        System.out.println("Cube = 75, Triple = (38,43,66)");
        System.out.println("Cube = 76, Triple = (12,40,72)");
        System.out.println("Cube = 76, Triple = (31,33,72)");
        System.out.println("Cube = 78, Triple = (39,52,65)");
        System.out.println("Cube = 80, Triple = (28,56,68)");
        System.out.println("Cube = 81, Triple = (9,54,72)");
        System.out.println("Cube = 81, Triple = (25,48,74)");
        System.out.println("Cube = 82, Triple = (4,34,80)");
        System.out.println("Cube = 82, Triple = (12,64,66)");
        System.out.println("Cube = 82, Triple = (19,60,69)");
        System.out.println("Cube = 84, Triple = (28,53,75)");
        System.out.println("Cube = 84, Triple = (42,56,70)");
        System.out.println("Cube = 84, Triple = (54,57,63)");
        System.out.println("Cube = 85, Triple = (50,61,64)");
        System.out.println("Cube = 87, Triple = (20,54,79)");
        System.out.println("Cube = 87, Triple = (26,55,78)");
        System.out.println("Cube = 87, Triple = (33,45,81)");
        System.out.println("Cube = 87, Triple = (38,48,79)");
        System.out.println("Cube = 88, Triple = (21,43,84)");
        System.out.println("Cube = 88, Triple = (25,31,86)");
        System.out.println("Cube = 88, Triple = (32,46,82)");
        System.out.println("Cube = 89, Triple = (17,40,86)");
        System.out.println("Cube = 90, Triple = (10,60,80)");
        System.out.println("Cube = 90, Triple = (25,38,87)");
        System.out.println("Cube = 90, Triple = (45,60,75)");
        System.out.println("Cube = 90, Triple = (58,59,69)");
        System.out.println("Cube = 92, Triple = (6,72,74)");
        System.out.println("Cube = 92, Triple = (54,60,74)");
        System.out.println("Cube = 93, Triple = (32,54,85)");
        System.out.println("Cube = 95, Triple = (15,50,90)");
        System.out.println("Cube = 96, Triple = (19,53,90)");
        System.out.println("Cube = 96, Triple = (48,64,80)");
        System.out.println("Cube = 97, Triple = (45,69,79)");
        System.out.println("Cube = 99, Triple = (11,66,88)");
        System.out.println("Cube = 100, Triple = (16,68,88)");
        System.out.println("Cube = 100, Triple = (35,70,85)");
        System.out.println("Cube = 102, Triple = (51,68,85)");
        System.out.println("Cube = 103, Triple = (12,31,102)");
        System.out.println("Cube = 105, Triple = (33,70,92)");
        System.out.println("Cube = 106, Triple = (58,68,88)");
        System.out.println("Cube = 108, Triple = (12,72,96)");
        System.out.println("Cube = 108, Triple = (13,51,104)");
        System.out.println("Cube = 108, Triple = (15,82,89)");
        System.out.println("Cube = 108, Triple = (24,38,106)");
        System.out.println("Cube = 108, Triple = (54,72,90)");
        System.out.println("Cube = 110, Triple = (29,75,96)");
        System.out.println("Cube = 111, Triple = (16,47,108)");
        System.out.println("Cube = 112, Triple = (72,76,84)");
        System.out.println("Cube = 113, Triple = (50,74,97)");
        System.out.println("Cube = 114, Triple = (18,60,108)");
        System.out.println("Cube = 114, Triple = (57,76,95)");
        System.out.println("Cube = 115, Triple = (3,34,114)");
        System.out.println("Cube = 116, Triple = (23,86,97)");
        System.out.println("Cube = 116, Triple = (30,84,98)");
        System.out.println("Cube = 116, Triple = (44,60,108)");
        System.out.println("Cube = 117, Triple = (13,78,104)");
        System.out.println("Cube = 120, Triple = (9,55,116)");
        System.out.println("Cube = 120, Triple = (42,84,102)");
        System.out.println("Cube = 120, Triple = (60,80,100)");
        System.out.println("Cube = 121, Triple = (49,84,102)");
        System.out.println("Cube = 122, Triple = (19,92,101)");
        System.out.println("Cube = 123, Triple = (6,51,120)");
        System.out.println("Cube = 123, Triple = (18,96,99)");
        System.out.println("Cube = 123, Triple = (44,51,118)");
        System.out.println("Cube = 125, Triple = (20,85,110)");
        System.out.println("Cube = 126, Triple = (14,84,112)");
        System.out.println("Cube = 126, Triple = (23,94,105)");
        System.out.println("Cube = 126, Triple = (63,84,105)");
        System.out.println("Cube = 127, Triple = (13,65,121)");
        System.out.println("Cube = 129, Triple = (38,57,124)");
        System.out.println("Cube = 132, Triple = (5,76,123)");
        System.out.println("Cube = 132, Triple = (48,69,123)");
        System.out.println("Cube = 132, Triple = (66,88,110)");
        System.out.println("Cube = 133, Triple = (21,70,126)");
        System.out.println("Cube = 134, Triple = (44,102,108)");
        System.out.println("Cube = 134, Triple = (86,95,97)");
        System.out.println("Cube = 135, Triple = (15,90,120)");
        System.out.println("Cube = 137, Triple = (44,73,128)");
        System.out.println("Cube = 138, Triple = (9,108,111)");
        System.out.println("Cube = 138, Triple = (69,92,115)");
        System.out.println("Cube = 138, Triple = (72,76,122)");
        System.out.println("Cube = 138, Triple = (81,90,111)");
        System.out.println("Cube = 139, Triple = (94,96,99)");
        System.out.println("Cube = 140, Triple = (14,108,114)");
        System.out.println("Cube = 140, Triple = (49,98,119)");
        System.out.println("Cube = 140, Triple = (90,95,105)");
        System.out.println("Cube = 141, Triple = (72,85,122)");
        System.out.println("Cube = 142, Triple = (28,46,140)");
        System.out.println("Cube = 142, Triple = (31,64,137)");
        System.out.println("Cube = 144, Triple = (16,96,128)");
        System.out.println("Cube = 144, Triple = (68,78,130)");
        System.out.println("Cube = 144, Triple = (72,96,120)");
        System.out.println("Cube = 145, Triple = (12,81,136)");
        System.out.println("Cube = 145, Triple = (55,75,135)");
        System.out.println("Cube = 147, Triple = (22,75,140)");
        System.out.println("Cube = 150, Triple = (24,102,132)");
        System.out.println("Cube = 150, Triple = (71,73,138)");
        System.out.println("Cube = 150, Triple = (75,100,125)");
        System.out.println("Cube = 150, Triple = (76,86,132)");
        System.out.println("Cube = 151, Triple = (46,47,148)");
        System.out.println("Cube = 152, Triple = (24,80,144)");
        System.out.println("Cube = 152, Triple = (62,66,144)");
        System.out.println("Cube = 153, Triple = (17,102,136)");
        System.out.println("Cube = 156, Triple = (65,87,142)");
        System.out.println("Cube = 156, Triple = (78,104,130)");
        System.out.println("Cube = 159, Triple = (3,121,131)");
        System.out.println("Cube = 159, Triple = (87,102,132)");
        System.out.println("Cube = 160, Triple = (56,112,136)");
        System.out.println("Cube = 160, Triple = (69,123,124)");
        System.out.println("Cube = 162, Triple = (18,108,144)");
        System.out.println("Cube = 162, Triple = (36,57,159)");
        System.out.println("Cube = 162, Triple = (50,96,148)");
        System.out.println("Cube = 162, Triple = (59,93,148)");
        System.out.println("Cube = 162, Triple = (81,108,135)");
        System.out.println("Cube = 164, Triple = (8,68,160)");
        System.out.println("Cube = 164, Triple = (24,128,132)");
        System.out.println("Cube = 164, Triple = (38,120,138)");
        System.out.println("Cube = 164, Triple = (69,99,146)");
        System.out.println("Cube = 167, Triple = (12,86,159)");
        System.out.println("Cube = 168, Triple = (56,106,150)");
        System.out.println("Cube = 168, Triple = (84,112,140)");
        System.out.println("Cube = 168, Triple = (108,114,126)");
        System.out.println("Cube = 170, Triple = (96,107,141)");
        System.out.println("Cube = 170, Triple = (100,122,128)");
        System.out.println("Cube = 171, Triple = (19,114,152)");
        System.out.println("Cube = 171, Triple = (27,90,162)");
        System.out.println("Cube = 171, Triple = (54,80,163)");
        System.out.println("Cube = 171, Triple = (107,108,136)");
        System.out.println("Cube = 174, Triple = (40,108,158)");
        System.out.println("Cube = 174, Triple = (45,126,147)");
        System.out.println("Cube = 174, Triple = (47,97,162)");
        System.out.println("Cube = 174, Triple = (52,110,156)");
        System.out.println("Cube = 174, Triple = (66,90,162)");
        System.out.println("Cube = 174, Triple = (76,96,158)");
        System.out.println("Cube = 174, Triple = (87,116,145)");
        System.out.println("Cube = 175, Triple = (28,119,154)");
        System.out.println("Cube = 176, Triple = (25,92,167)");
        System.out.println("Cube = 176, Triple = (42,86,168)");
        System.out.println("Cube = 176, Triple = (50,62,172)");
        System.out.println("Cube = 176, Triple = (64,92,164)");
        System.out.println("Cube = 177, Triple = (48,137,142)");
        System.out.println("Cube = 178, Triple = (34,80,172)");
        System.out.println("Cube = 178, Triple = (48,133,147)");
        System.out.println("Cube = 179, Triple = (17,57,177)");
        System.out.println("Cube = 180, Triple = (20,120,160)");
        System.out.println("Cube = 180, Triple = (50,76,174)");
        System.out.println("Cube = 180, Triple = (63,126,153)");
        System.out.println("Cube = 180, Triple = (90,120,150)");
        System.out.println("Cube = 180, Triple = (116,118,138)");
        System.out.println("Cube = 181, Triple = (108,109,150)");
        System.out.println("Cube = 184, Triple = (12,144,148)");
        System.out.println("Cube = 184, Triple = (108,120,148)");
        System.out.println("Cube = 185, Triple = (57,68,180)");
        System.out.println("Cube = 185, Triple = (68,113,166)");
        System.out.println("Cube = 186, Triple = (18,121,167)");
        System.out.println("Cube = 186, Triple = (64,108,170)");
        System.out.println("Cube = 186, Triple = (93,124,155)");
        System.out.println("Cube = 187, Triple = (58,131,160)");
        System.out.println("Cube = 188, Triple = (115,122,149)");
        System.out.println("Cube = 189, Triple = (21,46,188)");
        System.out.println("Cube = 189, Triple = (21,126,168)");
        System.out.println("Cube = 190, Triple = (30,100,180)");
        System.out.println("Cube = 190, Triple = (56,133,163)");
        System.out.println("Cube = 191, Triple = (39,146,156)");
        System.out.println("Cube = 192, Triple = (34,123,173)");
        System.out.println("Cube = 192, Triple = (38,106,180)");
        System.out.println("Cube = 192, Triple = (96,128,160)");
        System.out.println("Cube = 193, Triple = (25,68,190)");
        System.out.println("Cube = 194, Triple = (90,138,158)");
        System.out.println("Cube = 196, Triple = (126,133,147)");
        System.out.println("Cube = 197, Triple = (53,58,194)");
        System.out.println("Cube = 198, Triple = (22,132,176)");
        System.out.println("Cube = 198, Triple = (27,46,197)");
        System.out.println("Cube = 198, Triple = (73,135,170)");
        System.out.println("Cube = 198, Triple = (99,132,165)");
        System.out.println("Cube = 199, Triple = (6,127,180)");
        System.out.println("Cube = 200, Triple = (32,136,176)");
        System.out.println("Cube = 200, Triple = (70,140,170)");
    }

}


enunciado 108 suma maxima

FONDO
Un problema que es simple de resolver en una dimensión a menudo es mucho más difícil de resolver en más de una dimensión. Considere la posibilidad de satisfacer una expresión booleana en forma normal conjuntiva en el que cada conjunto se compone de exactamente 3 disyuntos. Este problema (3-SAT) es NP-completo. El problema 2-SAT se resuelve de forma eficiente, sin embargo. En contraste, algunos problemas pertenecen a la misma clase de complejidad independientemente de la dimensionalidad del problema.

El problema
Dada una matriz de 2 dimensiones de los números enteros positivos y negativos, encontrar el sub-rectángulo con la suma más grande. La suma de un rectángulo es la suma de todos los elementos de ese rectángulo. En este problema, el sub-rectángulo con la suma más grande se conoce como la máxima sub-rectángulo. Un sub-rectángulo es cualquier sub-matriz contigua de tamaño 1x1 o superior situado dentro de toda la gama. Como ejemplo, la máxima sub-rectángulo de la matriz:

0             -2            -7            0
9             2             -6            2
-4            1             -4            1
-1            8             0             -2
se encuentra en la esquina inferior izquierda:
9             2
-4            1
-1            8
y tiene la suma de 15.


Entrada y Salida
La entrada consiste en una matriz de NxN enteros. La entrada comienza con un único entero positivo n en una línea por sí mismo lo que indica el tamaño de la plaza matriz bidimensional. Esto es seguido por N^2 enteros separados por espacios en blanco (saltos de línea y espacios). Estos N^2 enteros constituyen la matriz en orden de las filas (es decir, todos los números de la primera fila, de izquierda a derecha, y luego todos los números de la segunda fila, de izquierda a derecha, etc.). N puede ser tan grande como 100. Los números en la matriz estará en la gama de [-127, 127].

La salida es la suma de la máxima sub-rectángulo.

Ejemplo de entrada

4
0 -2 0 -7 -6 9 2 2
-4 1 -4 -1 1
8 0 -2
Ejemplo de salida

15

enunciado 12342 Calculador de taxas

La gente de un país determinado tienen un poco de interés en el pago de impuestos. Este no es el caso de que no aman el país o que no quieren obedecer la ley, pero el problema es que los complejos cálculos de impuesto a pagar. La mayoría de las personas no entienden la regla y algunos abogados toman altos cargos para ayudar a (?) Ellos. Así, la mayoría de las personas simplemente evitar pagar impuestos. Consciente de esto, el Gobierno decidió automatizar el sistema de pago de impuestos y usted nombró para programar una calculadora de impuestos que tiene un ingreso anual de personas como entrada y calcular el impuesto a pagar por él. Esta es la regla para calcular el impuesto a pagar para una persona:
1. Los primeros 180,000 / - del ingreso es libre de impuestos.
2. Los siguientes 300000 / - tendrá 10% de impuestos.
3. Los siguientes 400000 / - tendrá 15% de impuestos.
4. Los siguientes 300000 / - tendrá 20% de impuestos.
5. El resto tendrá un 25% de impuestos.
6. El impuesto mínimo a pagar será de 2.000 / -. Esto es, si algun impuesto está por debajo de 2000 / - (pero por supuesto mayor que cero) debe pagar 2.000 / -
7. El impuesto a pagar debe ser un entero. Si el impuesto calculado es un punto flotante, entonces debe ser reemplazado por el menor entero mayor que el impuesto a pagar.
Entrada
La primera línea de entrada contendrá un número entero T (T ≤ 5000), que indica el número de casos de prueba.
Cada una de las siguientes líneas de T contiene un entero k (1 ≤ k ≤ 109).
Salida
Para cada línea de salida de entrada el número de caso y un entero que es el impuesto por pagar por el ingreso dado.
Cantidad de Impuesto Tasa
180 000 0% 0
300 000 10% 30 000
135.000 15% 20.250
50250 total
Ejemplo de entrada
3
180001
12345
615000
Ejemplo de salida
Caso 1: 2000
Caso 2: 0

Caso 3: 50.250





Explicacion propia del ejercicio:

Las taxas inferiores a 180000 no pagan impuestos.
si pasas de ahi el impuesto minimo son 2000 (monedas).
a partir de los 180000 (monedas) se empieza a calcular el impuesto.
Los "primeros" 300000 se calculan con un 10% de impuesto, por ejemplo:
             A 200000 se le restarian los 180000 libres de impuesto y se hacia el 10% de 20000.    
A partir de los 480000 (180000+300000) a los siguientes 400000  (monedas) se le aplica el 15% de impuesto, como en el caso anterior.
Luego (880000 monedas) se aplica un 20% durante 300000  (monedas).
Por ultimo, a lo restante (la parte de ingresos mayor a 1180000 monedas ) se le aplica un impuesto de 25%.

Solucion 12342 Calculadora de taxas

 * and open the template in the editor.
 */
package UVA_Pendientes;

import java.util.Scanner;

/**
 *
 * @author DAM116
 */
public class UVA12342_TaxCalculator {

    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        int casos, num;
        casos = entrada.nextInt();
        for (int i = 0; i < casos; i++) {
            num = entrada.nextInt();
            System.out.println("Case " + (i + 1) + ": " + devolverImpuesto(num));
        }
    }

    static int devolverImpuesto(int num) {
        double diff, taxa = 0;
        if (num > 180000) {
            num -= 180000;
            if (num > 0) {
                diff = Math.min(num, 300000);
                num -= diff;
                taxa += 0.1 * diff;
            }
            if (num > 0) {
                diff = Math.min(num, 400000);
                num -= diff;
                taxa += 0.15 * diff;
            }
            if (num > 0) {
                diff = Math.min(num, 300000);
                num -= diff;
                taxa += 0.2 * diff;
            }

            if (num > 0) {
                taxa += 0.25 * num;
            }
            taxa = Math.max(2000, taxa);
        }
        if (taxa != 0 && taxa != 2000) {
            taxa = Math.round(taxa + 0.49);
        }
        return (int) taxa;
    }
}

miércoles, 4 de febrero de 2015

solucion 11799 horror dash

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package UVA_RESOLTO;

import java.util.Scanner;

/**
 *
 * @author dam116
 */
public class UVA11799_HorrorDash {

    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        int num;
        String cadena;
        String[] numeros;
        num = entrada.nextInt();
        entrada.nextLine();
        int max = 0;
        for (int i = 1; i <= num; i++) {
            cadena = entrada.nextLine();
            numeros = cadena.split(" ");
            for (String numero : numeros) {

                max = Math.max(max, Integer.parseInt(numero));
            }
            System.out.println("Case " + i + ": " + max);
            max = 0;
        }
    }
}

Solución 10055-Hashmat, el guerrero valiente

package uva10055;

import java.util.Scanner;

/**
 *
 * @author dam129
 */
public class Uva10055 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
    

10055 – Hashmat, el guerrero valiente



  Hashmat es un guerreo valiente con un grupo de jóvenes soldados que se desplazan de un lugar a otro para luchar contra sus oponentes. Antes de luchar calculan la diferencia entre su número de soldados y el número de soldados de sus oponentes, Dependiendo de esta diferencia deciden si luchar o no. El número de soldados de Hashmat nunca es mejor que el de su oponente.

Entrada                                                                                                                                                      
Consiste en dos números enteros en cada línea. Estos dos números denotan el número de soldados de Hashmat y de su oponente respectivamente. Los enteros no podrán ser mayores de 2 elevado a 32.

Salida
Para cada línea de la entrada se imprime la diferencia entre el número de soldados de Hashmat y el número de soldados de su oponente. Cada salida se imprime en una línea diferente.

Ejemplo Entrada
10 12
10 14
100 200

Ejemplo Salida
2
4
100

enunciado 11799 Horror Dash

Es esa época del año otra vez! Globos y banderas de colores brillantes se extienden a lo largo de todo tu vecindario por sólo esta una ocasión. Es la fiesta anual del payaso en tu escuela local. Por primera vez en su vida, los estudiantes prueban sus dotes para ser el mejor payaso. Algunos caminan en largos zancos, otros tratan de hacer reir a la multitud en el escenario, mientras que otros aún tratan de hacer su primer acto de malabarismo - algunos "maestros payasos 'incluso enseñan estos trucos a los visitantes en el festival.
Como parte del festival, hay un evento único que se conoce como el "Guion de terror". En este caso, N (1≤N≤100) estudiantes vestidos con los trajes más aterradores posibles empiezan una carrera para coger un pobre payaso que se ejecuta en la misma pista. El payaso tropieza, pierde su mente, y hace todo tipo de actos cómicos mientras es perseguido en la pista. Para mantener el evento  el mayor tiempo posible, el payaso debe correr lo suficientemente rápido para no ser capturado por cualquiera de las criaturas de miedo. Sin embargo, para mantener al público al borde de sus asientos, el payaso tampoco debe correr demasiado rápido. Aquí es donde se debe ayudar.

Dada la velocidad de todas las criaturas de miedo, se debe averiguar la velocidad mínima que el payaso debe mantener para que no se deje atrapar incluso si siguen corriendo siempre.

entrada
La primera línea de entrada contiene un único entero T (T≤50), el número de casos de prueba. Esta línea es seguida por los T casos de entrada. Cada caso de entrada es en una sola línea de números enteros separados por espacios. El primero de estos enteros es N, el número de estudiantes que actúan como criaturas de miedo. El resto de la línea tiene más N números enteros, c0, c1, ..., cn, cada uno representando la velocidad de una criatura en metros por segundo (1≤ci≤10000 para cada i). Usted puede asumir que siempre están corriendo en la misma dirección en la pista.

salida
Debe haber una sola línea de salida para cada caso de prueba, con el formato "Caso c: s". Aquí, c representa el número de serie de la caja de entrada, empezando por 1, mientras que s representa la velocidad requerida del payaso, en metros por segundo.


Sample Input
Sample Output
2
5 9 3 5 2 6
1 2
Case 1: 9
Case 2: 2


solucion 100 El problema 3n+1

public class UVA100_3nMAS1 {

    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        int a, b, cont, max = 0, num, inicio, fin;
        do {
            a = entrada.nextInt();
            b = entrada.nextInt();
            inicio = Math.min(a, b);
            fin = Math.max(a, b);
            for (int i = inicio; i <= fin; i++) {
                cont = 1;
                num = i;
                while (num != 1) {
                    if (num % 2 == 0) {
                        num /= 2;
                    } else {
                        num = num * 3 + 1;
                    }
                    cont++;
                }
                max = Math.max(max, cont);
            }
        System.out.printf("%d %d %d%n", a, b, max);
        max = 0;
        } while (entrada.hasNext());
    }
}

Solución 100 - El problema 3n + 1


package The_3n_problem;

import java.util.Scanner;

public class The_3n_1_problem {

    public static void main(String[] args) {
        Scanner leer = new Scanner(System.in);
        int mayor, num1, num2, max, min;

        do {
            mayor = 0;
            num1 = leer.nextInt();
            num2 = leer.nextInt();
         
            if (num1 > num2) {
                max = num1;
                min = num2;
            } else {
                max = num2;
                min = num1;
            }
         
            for (int i = min; i <= max; i++) {
                if (get3n(i) > mayor) {
                    mayor = get3n(i);
                }
            }
            System.out.println(num1 + " " + num2 + " " + mayor);

        } while (leer.hasNext());
    }
 

264-Cuenta con Cantor

 Cuenta con Cantor.

Una de las famosas pruebas de la matemática moderna es la demostración de Georg Cantor en la cual
el conjunto de los números racionales es enumerable. La prueba funciona mediante el uso de una
enumeración de los números racionales como se muestra en el siguiente diagrama.

1/1   1/2   1/3   1/4   1/5...
2/1   2/2   2/3   2/4...
3/1   3/2   3/3...
4/1   4/2...
5/1...

En el diagrama anterior, el primer término es 1/1, el segundo término es 1/2, el tercer término es
2/1, el cuarto término es 3/1, el quinto término es 2/2, el sexto término es el 1/3, el séptimo es
1/4 (es una sucesión en zigzag) y así sucesivamente.

Entrada y Salida

Tienes que escribir un programa que lea una lista de números comprendidos entre el 1 y 10^7 y que
imprima con cada número el término correspondiente en la sucesión de Cantor como se indica a continuación.

La entrada del programa tiene que contener un solo número por línea.

Ejemplo de entrada
3
14
7

Ejemplo de salida

El número 3 es 2/1
El número 14 es 2/4
El número 7 es 1/4

Traducción: Roberto Nóvoa González

Enunciado original

453 - Intersecting Circles(La intersección de los círculos)

La ecuación de un círculo con radio r y centrotex2html_wrap_inline29 es


Escriba un programa que compare dos círculos para ver si se cruzan y, si lo hacen, calcular los puntos de intersección. (Puede haber 1, 2, o un número infinito de tales puntos).

Entrada

La entrada a este programa consistirá en un número par de líneas. Cada dos líneas representan un problema de intersección. Cada línea contendrá 3 números reales que constituyen los parámetros tex2html_wrap_inline33 , tex2html_wrap_inline35  y r de un círculo.

Salida

Para cada problema, la salida debe ser las palabras “No hay intersección” si los círculos no tienen intersección.

Cuando tienen un número infinito de puntos de intersección, la salida debe ser las palabras "Los círculos son iguales".

Si hay intersección en 1 o 2 puntos, la salida debe ser una línea con, respectivamente,  uno o dos pares de números reales que dan las coordenadas X e Y de cualquier punto de intersección. Los pares deben ser ordenados primero por su coordenada X, y cuando éstas son iguales por su coordenada Y.

Entrada ejemplo

0.0 0.0 1.0
3.0 0.0 1.0
0.0 0.0 1.0
0.0 0.0 1.0
0.0 0.0 1.0
1.0 0.0 1.0

Salida ejemplo

No hay intersección
Los círculos son iguales
(0.500,-0.866)(0.500,0.866)

Enunciado original:
Fuente


100 - El problema 3n + 1

 El problema 3n + 1 

Trasfondo

Los problemas en ciencias computacionales son siempre clasificados según pertenezcan a ciertas clases de problemas (por ejemplo, NP, Irresolvibles, Recursivos). En este problema tendrás que analizar las propiedades de un algoritmo cuya clasificación no es conocida por todas las posibles entradas.


El Problema

Considerando el siguiente algoritmo:

1.       Entrada n
2.       Imprime n
3.       Si n = 1 entonces PARA
4.       Si n es impar entonces n ß 3n + 1
5.       Si no n ß n/2
6.       Volver al paso 2

sábado, 31 de enero de 2015

solucion 11777 Automatizar los grados

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package programame1;

import java.util.Scanner;

/**
 *
 * @author Santi
 */
public class UVA11777_AutomatizarGrados {

    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        int cant;
        int num1, num2, num3, num4, num5, num6, num7;
        cant = entrada.nextInt();
        for (int i = 1; i <= cant; i++) {
            num1 = entrada.nextInt();
            num2 = entrada.nextInt();
            num3 = entrada.nextInt();
            num4 = entrada.nextInt();
            num5 = entrada.nextInt();
            num6 = entrada.nextInt();
            num7 = entrada.nextInt();
            mostrarNota(i, calculaNota(num1, num2, num3, num4, num5, num6, num7));
        }
    }

    static int calculaNota(int num1, int num2, int num3, int num4, int num5, int num6, int num7) {
        int nota;
        int media = 0;
        nota = num1 + num2 + num3 + num4;
        if (num5 >= num6 || num5 >= num7) {
            media += num5;
        }
        if (num6 >= num5 || num6 >= num7) {
            media += num6;
        }
        if (num7 > num5 || num7 > num6) {
            media += num7;
        }
        nota += media / 2;
        return nota;
    }

    static void mostrarNota(int caso, int nota) {
        char calificacion;
        if (nota >= 90) {
            calificacion = 'A';
        } else if (nota >= 80) {
            calificacion = 'B';
        } else if (nota >= 70) {
            calificacion = 'C';
        } else if (nota >= 60) {
            calificacion = 'D';
        } else {
            calificacion = 'F';
        }
        System.out.println("Case " + caso + ": " + calificacion);
    }
}

enunciado 11777 automatizar los grados

11777 Automatizar los Grados
Los profesores de una escuela ubicada en la región occidental de Sylhet, sigue actualmente un sistema manual de clasificación de sus estudiantes. El proceso manual es muy lento y propenso a errores. Desde el próximo semestre que han decidido comprar algunas computadoras para que todo el proceso de clasificación pueden ser automatizadas. Y sí, lo has adivinado - que le han contratado para escribir un programa que hará el trabajo. La clasificación de cada curso se basa en la siguiente escala ponderada:
• Plazo 1 - 20%
• Plazo 2-20%
• Final - 30%
• Asistencia - 10%
• Clase - Pruebas de 20%
Las calificaciones con letras se hacen según la puntuación total obtenida por un estudiante y se muestra a continuación:
• A = 90%
• B = 80% y <90%
• C = 70% y <80%
• D = 60% y <70%
• F <60%
Plazo 1 y Plazo 2 son exámenes de 20 cada uno como nota maxima, Final es de 30 y Asistencia es de 10. Se hacen 3 pruebas por semestre con sus respectivas notas, la media de las 2 mejores se valoran con hasta 20 puntos.
Ejemplo: Di Tara obtuvo notas de 15, 18, 25 y 8 en el Trimestre 1, Trimestre 2, final y Asistencia
respectivamente. Sus marcas de la prueba 3 de clase son 15, 12 y 17. Desde será contado promedio de sus 2 mejores , su marca de prueba clase será igual a (15 + 17) / 2 = 16. Por lo tanto, las marcas totales = 15 + 18 + 25 + 8 + 16 = 82 y ella va a obtener una B.

entrada
La primera línea de entrada es un número entero T (T <100) que indica el número de casos de prueba. Cada caja contiene 7 enteros en una línea en el orden:
  • trimestre 1
  • trimestre 2
  • Final
  • Asistencia
  • test1
  • test2
  • test3
Todos estos enteros estarán en el rango [0, puntuación total posible para el ensayo].

salida
Para cada caso, la salida el número de caso primero seguido de la letra de grado {ABCDF}.

Ejemplo de entrada
3
15 18 25 8 15 17 12
20 20 30 10 20 20 20
20 20 30 10 18 0 0

Ejemplo de salida
Caso 1: B
Caso 2: A

Caso 3: B


solucion 11727 Recortes

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package programame1;

import java.util.Scanner;

/**
 *
 * @author Santi
 */
public class UVA11727_Recortes {

    public static void main(String[] args) {

        Scanner entrada = new Scanner(System.in);
        int num1, num2, num3;
        int cant = entrada.nextInt();
        for (int i = 1; i <= cant; i++) {
            num1 = entrada.nextInt();
            num2 = entrada.nextInt();
            num3 = entrada.nextInt();
            System.out.println("Case " + i + ": " + numeroMedio(num1, num2, num3));
        }
    }

    static int numeroMedio(int a, int b, int c) {
        int max, min;
        max = Math.max(a, b);
        max = Math.max(max, c);
        min = Math.min(a, b);
        min = Math.min(c, min);
        if (a != max && a != min) {
            return a;
        } else if (b != max && b != min) {
            return b;
        } else {
            return c;
        }
    }
}

Enunciado 11727 Recortes

La Empresa XYZ se ha visto muy afectada por la recesión y está teniendo una gran cantidad de medidas de reducción de costes. Algunas de estas medidas incluyen renunciar a espacio de oficinas, pasando de código abierto, lo que reduce los incentivos, recortando en lujos y la emisión de cartas de despido.
Tienen tres (3) empleados que trabajan en el departamento de contabilidad y se va a despedir a dos (2) de ellos. Después de una serie de reuniones, que han decidido desalojar a la persona que recibe la mayor sueldo y el que obtenga el menor. Esta suele ser la tendencia general durante crisis como esta
Se le dará los salarios de estos 3 empleados que trabajan en el departamento de contabilidad. Usted tiene que averiguar el sueldo de la persona que sobrevive.
entrada
La primera línea de entrada es un número entero T (T <20) que indica el número de casos de prueba. Cada caso consiste en una línea con 3 números enteros positivos distintos. Estos 3 enteros representan los sueldos de los tres empleados. Todos estos serán números enteros en el rango [1000, 10000]
salida
Para cada caso, la salida el número de caso seguido por el sueldo de la persona que sobrevive.
Ejemplo de entrada
  3
  1000 2000 3000
  3000 2500 1500
1500 1200 1800
  Ejemplo de salida
  Caso 1: 2000
Caso 2: 2500

  Caso 3: 1500

jueves, 22 de enero de 2015

136 Numeros feos

Los números feos son números cuyos únicos divisores primos son 2, 3 ó 5. La secuencia
1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, ...
muestra los primeros 11 números feos. Por convención, 1 incluido.

Escriba un programa para encontrar e imprimir el número feo 1500'th.
Entrada y Salida
No hay ninguna entrada para este programa. La salida debe constar de una sola línea como se muestra a continuación, con <número> reemplazado por el número calculado.
Ejemplo de salida
El número feo 1500'th es <número>.


Traducido por Santiago

solucion UVA 136 Numeros Feos

package UVA;

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 *
 * @author dam116
 */
public class UVA136_UglyNumber {
//El tiempo del calculo de este ejercicio es demasiado largo pero se puede simplificar a esto:

    public static void main(String[] args) {
        System.out.println("The 1500'th ugly number is 859963392.");
        mostrarNumeros(1500);
    }

//Esta seria la forma de calcularlo

    static void mostrarNumeros(int fin) {
        int num = 1, cant = 0;
        System.out.print("1, ");
        while (cant < fin) {
            if (comprobarNumFeo(num)) {
                System.out.print(num + ", ");
                cant++;
            }
            num++;
        }
    }

    static boolean comprobarNumFeo(int num) {
        if (!(num % 2 == 0 || num % 3 == 0 || num % 5 == 0)) {
            return false;
        }
        for (int i = 4; i < num; i++) {
            if (esPrimo(i)) {
                if (i != 5) {
                    if (num % i == 0) {
                        return false;
                    }
                }
            }
        }
        return true;
    }

    static boolean esPrimo(int num) {
        for (int i = 2; i < num; i++) {
            if (num % i == 0) {
                return false;
            }
        }
        return true;
    }
}

miércoles, 21 de enero de 2015

Solución 10019 Metodo de encriptación invertida

import java.util.Scanner;

/**
 *
 * @author dam101
 */
public class metodoencriptacion10019 {

    public static void main(String[] args) {
        Scanner leer = new Scanner(System.in);
        int numero, cant, num, cont1, cont2;
        int[] hex = {0, 1, 1, 2, 1, 2, 2, 3, 1, 2};
/*este array esla cantidad de unos en los 10 primeros numeros de la conversion de hexadecimal a binario.*/
        cant = leer.nextInt();
        for (int i = 0; i < cant; i++) {
            numero = leer.nextInt();
            num = numero;
            cont1 = 0;
            cont2 = 0;
            while (num >= 1) {
                if (num % 2 == 1) {
                    cont1++;
                }
                num /= 2;
            }
            String cadena = Integer.toString(numero);
            for (int j = 0; j < cadena.length(); j++) {
                cont2 += hex[Character.getNumericValue(cadena.charAt(j))];
            }
        System.out.println(cont1+" "+cont2);
        }
    }
}

SOLUCIONADO : Amanda y Santiago

Solucion 1585

import java.util.Scanner;
/**
 *
 * @author dam123
 */
public class Uva1585 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Scanner leer = new Scanner(System.in);
        int casos, puntos, total;
        String cadena;

        //System.out.println("Introduzca numero de casos");
        casos = leer.nextInt();
        leer.nextLine();
        for (int i = 0; i < casos; i++) {
            cadena = leer.nextLine();
            puntos=total=0;
            for (int j = 0; j < cadena.length(); j++) {
                if (cadena.charAt(j) == 'O') {
                    puntos++;
                    total += puntos;
                } else /*if (cadena.charAt(j) == 'X')*/ {
                    puntos = 0;
                }
            }
            System.out.println(total);
        }

    }
   
}

1585-SCORE

import java.util.Scanner;

/**
 *
 * @author dam114
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        int cont = 0, resultado = 0, lectura, cont2 = 0;
        String cadena;
        Scanner leer = new Scanner(System.in);
        lectura = leer.nextInt();
        leer.nextLine();
        do {
            cadena = leer.nextLine();
            cont2++;
            for (int i = 0; i < cadena.length(); i++) {
                if (cadena.charAt(i) == 'O') {
                    cont++;
                    resultado = cont + resultado;

                } else {
                    cont = 0;

                }
            }
            System.out.println(resultado);
            resultado = 0;
            cont = 0;
        } while (cont2 != lectura);

    }
}

Solucionado por Valeiras

Referencia: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4460

Solución UVA 1585 Score

package uva1585;
import java.util.Scanner;
/**
 *
 * @author dam129
 */
public class Uva1585 {

    /**
     * @param args the command line arguments
     */

Solución UVA 686 Goldbach's Conjecture (II)


import java.util.Scanner;

/**
 *
 * @author DAM112
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        int[] anArray;
        int [] aArray;
        aArray = new int[32678];

        int num, cont, cont1, raiz, cont2 , cont3 , cont4=0, cont5=0;
        boolean primo;
       
        Scanner leer = new Scanner(System.in);
       
       
        do {
           
            num = leer.nextInt();
            if (num != 0) {
                aArray[cont4] = num;
                cont4++;
            }
           
        } while (num != 0);
       
        do {
            cont1=0;
            cont2=0;
            cont3 = 0;
            for (int i = 1; i < aArray[cont5]; i++) {
                primo = true;
                cont = 2;
                raiz = (int) Math.sqrt(i);
                while (primo && (cont <= raiz)) {
                    if (i % cont == 0) {
                        primo = false;
                    } else {
                        ++cont;
                    }
                }
               
                if (primo == true) {
                    cont2 = cont2 + 1;
                }
            }
           
            anArray = new int[cont2];
           
            for (int i = 1; i < aArray[cont5]; i++) {
               
                primo = true;
                cont = 2;
                raiz = (int) Math.sqrt(i);
                while (primo && (cont <= raiz)) {
                    if (i % cont == 0) {
                        primo = false;
                    } else {
                        ++cont;
                    }
                }
               
                if (primo == true) {
                   
                    anArray[cont3] = i;
                    cont3++;
                }
            }
           
            for (int i = 1; i < anArray.length; i++) {
                for (int j = 1; j < anArray.length; j++) {
                    if (anArray[i] + anArray[j] == aArray[cont5]) {
                        if (anArray[i] == anArray[j]) {
                        cont1++;

                    }
                        cont1++;
                       
                    }
                   
                }
               
            }
            System.out.println("" + cont1 / 2);
            cont5++;
        } while (cont5 != cont4);
       
    }
   
}