beecrowd 1292 · lei dos senos

Problema com um Pentágono

Relacionar o lado do pentágono regular ao lado do quadrado interno por meio de um triângulo.

razão constante

Primeiro, descubra os ângulos

O ângulo interno de um pentágono regular mede 108°. A construção do quadrado cria dois ângulos iguais ao redor do ângulo reto:

9° = (108° - 90°) / 2

O terceiro ângulo do triângulo completa 180°:

63° = 180° - 108° - 9°
Pentágono com quadrado interno e triângulo de lados F e L com ângulos 108 e 63 graus
Figura original: F e L ficam opostos, respectivamente, aos ângulos de 63° e 108°.

Lei dos senos

Na lei dos senos, cada lado é dividido pelo seno do ângulo oposto. O lado L do quadrado fica oposto a 108°, enquanto o lado F do pentágono fica oposto a 63°.

L / sen(108°) = F / sen(63°)  ⇒  L = F · sen(108°) / sen(63°)
Conversão obrigatória: math.sin recebe radianos. Use math.radians(108) e math.radians(63).

Triângulo da construção

108° 63°
sen(108°)
sen(63°)
L / F

A proporção não muda

Os ângulos são fixos, então sen(108°)/sen(63°) é uma constante. Se F dobrar, L também dobra. Cada caso requer apenas duas funções trigonométricas e uma multiplicação.

TempoO(1)
MemóriaO(1)
Saída10 casas
Lei dos senos em PythonAbrir 1292.py
import math
import sys


def lado_do_quadrado(lado_do_pentagono):
    # Pela lei dos senos: L / sen(108°) = F / sen(63°).
    # math.sin recebe radianos, então convertemos os dois ângulos.
    return (
        lado_do_pentagono
        * math.sin(math.radians(108.0))
        / math.sin(math.radians(63.0))
    )


def main():
    # A leitura e a escrita em bloco atendem todos os casos até EOF.
    entradas = map(float, sys.stdin.buffer.read().split())
    respostas = [f"{lado_do_quadrado(valor):.10f}" for valor in entradas]

    # join separa as respostas; o último + "\n" fecha a linha final.
    sys.stdout.write("\n".join(respostas) + "\n")


if __name__ == "__main__":
    main()

Fontes e validação