Pesquisar este blog

Livros Recomendados

sábado, 26 de dezembro de 2020

URI (BEECROWD) - 1039 - Geometria Computacional - Flores de Fogo (Fire Flowers) - C

Hoje vamos resolver um problema de Geometria Computacional!

Não tenho muito costume de resolvê-los até por falta de formação. Eles exigem uma forte base matemática. Mas esse aqui não é dos mais complexos, então foi possível resolvê-lo para vocês :)

Vocês verão que a solução é bem simples mesmo, basta a aplicação de uma simples fórmula bastante conhecida.

Bora conferir? ;)


Plataforma: URI (BEECROWD)

Problema1039

Enunciado:

Nos dias atuais uma flor de fogo não é algo considerado estranho para muitos jovens.  Isso porque um famoso jogo de videogame popularizou esse tipo de flor. Nesse jogo o protagonista ganhava superpoderes ao tocar em uma flor de fogo, passando a atirar pequenas bolas de fogo para derrotar seus inimigos.

No entanto, já se falava sobre flores de fogo há muito tempo atrás. Na mitologia polonesa, flores de fogo são flores místicas de grande poder guardadas por espíritos malignos. Ela possuía esse nome porque brilhava tanto que era impossível olhá-la diretamente. Quem possuísse uma flor dessas ganharia a habilidade de ler a mente de outras pessoas, encontrar tesouros escondidos e repelir todos os males.

Para obter uma flor de fogo, a pessoa deveria procurá-la em uma floresta antes da meia-noite na véspera do Noc Kupały. Exatamente à meia-noite ela floresceria. Para colhê-la seria preciso desenhar um círculo em volta dela. Parece uma tarefa fácil, no entanto, os espíritos malignos que guardam a flor tentariam de tudo para distrair qualquer um tentando colher a flor. Se a pessoa falhasse ao tentar desenhar um círculo em volta da flor, teria sua vida sacrificada.

Dados dois círculos, um desenhado por um ambicioso caçador de flores de fogo e outro representando a área da flor, sua tarefa é determinar se o caçador morre ou fica rico com sua conquista.

Linguagem: C

Solução:

#include <stdio.h>
#include <math.h>

int main() {
    int r1, x1, y1, r2, x2, y2;
    double d;
    while (scanf("%d %d %d %d %d %d", &r1, &x1, &y1, &r2, &x2, &y2) != EOF) {
        d = sqrt(pow(x2-x1,2)+pow(y2-y1,2));
        if (r1 >= d + r2)
            printf("RICO\n");
        else
            printf("MORTO\n");
    }
    
    return 0;
}

Nenhum comentário:

Postar um comentário

Postagem em destaque

URI (BEECROWD) - 2158 - Helping Uncle Cláudio (Ajudando o Tio Cláudio) - Matemática - C, C++ e Haskell

Buenas! Estou aqui mais uma vez para resolver um problema de Matemática! Agora tenho resolvido alguns dessa categoria, pra que vocês possam ...

Postagens mais visitadas