Algorithm


Problem Name: 2 AD-HOC - beecrowd | 2397

Problem Link: https://www.beecrowd.com.br/judge/en/problems/view/2397

Triângulos

 

Por OBI - Olimpíada Brasileira de Informática 2011 BR Brazil

Timelimit: 1

Caio estava brincando de construir triângulos com palitos de diferentes tamanhos. Ele fazia isso juntando as pontas de três palitos sobre uma mesa. Ele notou que podia agrupar os triângulos formados em três grupos:

  • Triângulos acutângulos, que são aqueles em que todos os ângulos internos medem menos de 90°;
  • Triângulos retângulos, que são aqueles que possuem um ângulo interno que mede exatamente 90°;
  • Triângulos obtusângulos, que são aqueles que possuem um ângulo interno que mede mais de 90°.

Ele também percebeu que nem sempre é possível formar um triângulo com três palitos.

Sua tarefa é, dados os comprimentos AB e C de três palitos, dizer se é possível formar um triângulo com esses palitos e, em caso afirmativo, dizer a qual grupo o triângulo formado pertence.

 

Entrada

 

A entrada consiste de uma única linha, contendo três inteiros AB e C (1 ≤ A, B, C ≤ 104) separados por espaço.

 

Saída

 

Imprima uma linha contendo apenas uma letra minúscula:

  • 'n' se não for possível formar um triângulo;
  • 'a' se o triângulo formado for acutângulo;
  • 'r' se o triângulo formado for retângulo;
  • 'o' se o triângulo formado for obtusângulo.

 

 

 

Exemplos de Entrada Exemplos de Saída

1 1 1

a

 

Code Examples

#1 Code Example with C++ Programming

Code - C++ Programming


#include <algorithm>
#include <cstdio>
using namespace std;
#define desigugalde(A, B, C) ((A + B) > (C))
int main() {
    int a, b, c, x, y, z;
    scanf("%d %d %d", &a, &b, &c);
    if (!desigugalde(a, b, c) || !desigugalde(b, c, a) ||
        !desigugalde(c, a, b)) {
        printf("n\n");
        return 0;
    }
    x = max(a, max(b, c));
    y = min(a, min(b, c));
    z = a + b + c - x - y;
    x *= x;
    y *= y;
    z *= z;
    if (x == y + z)
        printf("r\n");
    else if (x > y + z)
        printf("o\n");
    else
        printf("a\n");
    return 0;
}
Copy The Code & Try With Live Editor

Input

x
+
cmd
1 1 1

Output

x
+
cmd
a

#2 Code Example with Javascript Programming

Code - Javascript Programming


const { readFileSync } = require("node:fs")
const [A, B, C] = readFileSync("/dev/stdin", "utf8")
	.split(" ", 3)
	.map(value => Number.parseInt(value, 10))


const Triangle = {
	isTriangle(a, b, c) {
		const sides = [a, b, c].sort((a, b) => a - b)

		if (sides.some(side => side <= 0)) return false
		else if (sides[0] + sides[1] <= sides[2]) return false
		else return true
	},

	isPitagoric(/** @type {[number, number, number]}*/[a, b, c]) {
		return (a * a + b * b) == c * c || (a * a + c * c) == b * b || (b * b + c * c) == a * a
	},

	getTriangleTypesFromSides(sides = [0, 0, 0]) {
		const [a, b, c] = sides.sort((a, b) => b - a)

		if (sides.every(s => s === a)) return "EQUILATERO"
		else if (a == b || a == c || b == c) return "ISOSCELES"
		else return "ESCALENO"
	},

	getTriangleTypesFromAngles(sides = [0, 0, 0]) {
		const [a, b, c] = sides.sort((a, b) => b - a)

		if (Math.pow(a, 2) == Math.pow(b, 2) + Math.pow(c, 2)) return "RETANGULO"
		else if (Math.pow(a, 2) > Math.pow(b, 2) + Math.pow(c, 2)) return "OBTUSANGULO"
		else if (Math.pow(a, 2) < Math.pow(b, 2) + Math.pow(c, 2)) return "ACUTANGULO"
	}
}


function main() {
	const output = []
	const sides = [A, B, C]

	if (Triangle.isTriangle(...sides)) {
		switch (Triangle.getTriangleTypesFromAngles(sides)) {
			case "RETANGULO": output.push("r"); break
			case "OBTUSANGULO": output.push("o"); break
			case "ACUTANGULO": output.push("a"); break
		}
	}
	else output.push("n")

	console.log(output.join("\n"))
}

main()
Copy The Code & Try With Live Editor

Input

x
+
cmd
1 1 1

Output

x
+
cmd
a
Advertisements

Demonstration


Previous
#2396 Beecrowd Online Judge Solution 2396 Corrida Solution in C, C++, Java, Js and Python
Next
#2398 Beecrowd Online Judge Solution 2398 Caça ao Tesouro Solution in C, C++, Java, Js and Python