import java.util.Scanner; /** * Solucion al Problema: 1043 - Triangle Partitioning [http://lightoj.com/] * * @author BreakDark (Jhonny Monrroy) * @version 1.0 beta 08/10/2013 */ // ACEPTADO!!! xD public class Main { public static void main(String[] args) { Scanner Lee; // para leer los datos de entrada byte T, caso; // para los casos de entrada double AB, AC, BC; // para los lados del triangulo double r; // para el radio de las areas double Area, Area1, Area2; // para las areas double SenoDeAlpha; // Seno de Alfa double h, h1, h2; // la altura del triangulo inicial double AD; // longitud superior del trapecio, y la longitud buscada // AQUI INICIA EL PROGRAMA Lee = new Scanner(System.in); T = Lee.nextByte(); for (caso = 1; caso <= T; caso++) { // leemos la informacion AB = Lee.nextDouble(); AC = Lee.nextDouble(); BC = Lee.nextDouble(); r = Lee.nextDouble(); // obtenemos el area del traingulo Area = areaDelTriangulo(AB, AC, BC); h = 2 * Area / BC; Area2 = Area / (r + 1); Area1 = Area - Area2; // obtenemos el seno del angulo SenoDeAlpha = Area * 2 / (AB * BC); h2 = formulaDeSegundoGrado(BC, -(2 * Area2 + h * BC + 2 * Area1), 2 * Area2 * h); h1 = h - h2; AD = h1 / SenoDeAlpha; // mostramos el resultado System.out.println("Case " + caso + ": " + AD); } } /** * Obtiene uno de los resultados de la ecuacion de 2do grado ax2+bx+c * * @author BreakDark (Jhonny Monrroy) * @version 1.0 beta 25/08/2013 * @param a * El coeficiente A de la ecuacion de 2do grado * @param b * El coeficiente B de la ecuacion de 2do grado * @param c * El coeficiente C de la ecuacion de 2do grado * @return uno de los valores de x a partir de la ecuacion ax2+bx+c */ private static double formulaDeSegundoGrado(double a, double b, double c) { double dis = b * b - 4 * a * c; // discriminante if (dis >= 0) return ((-b - Math.sqrt(dis)) / (2 * a)); else System.out.println("El resultado es un numero imaginario :("); return 0; } /** * obtiene el area de un triangulo a partir de sus lados * * @author BreakDark (Jhonny Monrroy) * @version 1.0 beta 12/08/2013 * @param a * Longitud del lado a del triangulo * @param b * Longitud del lado b del triangulo * @param c * Longitud del lado c del triangulo * @return El area del triangulo de lados a, b, c */ private static double areaDelTriangulo(double a, double b, double c) { double s = (a + b + c) / 2; // semiperimetro return Math.sqrt(s * (s - a) * (s - b) * (s - c)); } }
Blog dedicado a la publicación de artículos, programas propios, traducciones de Roms de Nes, super Nes y mas, y alguno que otro artículo sobre tecnologia.
Thursday, September 15, 2016
Solucion al Problema: 1043 - Triangle Partitioning [http://lightoj.com/] con java
Para ver el link del problema Click aqui
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment