Autor da análise: tmadeira
Link: http://acm.pku.edu.cn/JudgeOnline/problem?id=1254
Resumo
Dados dois pontos em $\mathbb{R}^2$ juntamente com ângulos a partir de um referencial (i.e., duas retas) determinar as coordenadas cartesianas desse referencial (i.e., o ponto de interseção entre elas).
Nota: Não é preciso se preocupar com retas paralelas, pois o enunciado deixa claro que o ângulo entre as duas retas nunca é 180º.
Solução
Como os ângulos são dados no sentido horário e o norte é 0º, a primeira coisa que sugiro é colocá-los no nosso padrão. Para isto invertemos eles ($angle = 360-angle$) e adicionamos 90 (tudo junto fica $angle = 450-angle$).
Então podemos traduzir os nossos dados para aquela equação da reta que aprendemos lá na escola: $y=ax+b$ (para as duas retas dadas). $a$ é a tangente do ângulo (use a função tan da biblioteca math.h) e $b$ pode ser facilmente calculada com os outros valores[0].
Com as duas retas em mão, basta calcular sua interseção e imprimir a resposta em double com %.4f (que arredonda do jeito que o problema pede).
[0] Há o caso, porém, em que o ângulo dado é 0 ou 180 graus (e nesse caso faríamos o computador calcular a tangente de 90 ou 270, que resultam respectivamente em $+\infty$ e $-\infty$). Para este caso, basta considerar a reta $x = \textrm{``coordenada $x$ do ponto dado''}$.
Testes
Entrada
2
30 50 90
20 40 180
30 40 96
20 20 150
Saída
20.0000 50.0000
7.0610 42.4110
Discuta o problema
Acho que seria bom comentar como proceder caso uma reta seja paralela ao eixo y (o angulo dado é 0 ou 180)
Uhm… De fato. Editarei.
Valeu pela sugestão.