Pesquisar este blog

Livros Recomendados

quarta-feira, 10 de março de 2021

URI (BEECROWD) - 2386 - Telescópio - Ad-Hoc - C e C++

Telescópio, um exercício Ad-Hoc, resolvido e postado aqui! Mais um exercício da URI/BEECROWD para o qual disponibilizo a solução. Confira essa e outras soluções aqui no blog! :)

Plataforma: URI (BEECROWD)

Problema2386

Enunciado:

Telescópios são instrumentos que auxiliam a observação do céu, melhorando e aumentando o aspecto das estrelas, planetas e outros objetos brilhantes. Existem diversos tipos de telescópios, sendo os tipos mais comuns os de lentes objetivas (refratores) e os de espelhos (refletores).

A maneira como os telescópios melhoram a nossa percepção dos astros no céu é aumentando a quantidade de luz captada que chega aos nossos olhos. Toda luz que entra pelos nossos olhos entra por um orifício chamado pupila. Tal controla a quantidade de luz que entra nos olhos, aumentando o diâmetro quando o ambiente está escuro (e portanto precisamos obter mais luz para identificar os objetos) e diminuindo quando o ambiente está claro. Num ambiente muito escuro, a pupila pode atingir um diâmetro de 8 mm.

Cada objeto celeste (estrela, planeta, nebulosa, etc) emite uma quantidade de luz (fótons) que é homogeneamente distribuída quando chega na Terra. Por exemplo, a estrela A emite luz que pode ser captada a um fluxo de 40.000 fótons por segundo por milímetro quadrado. Isso é, a cada segundo, é possível captar 40.000 fótons provenientes da estrela A numa área de 1 mm 2. Ou seja, uma pupila de 10 mm 2 de área captaria 400.000 fótons provenientes da estrela A por segundo.

Para que nosso cérebro consiga interpretar que existe um objeto ali, porém, ele precisa receber 40.000.000 fótons por segundo. Assim, podemos utilizar um telescópio com lente (ou espelho) de 100 mm 2 de área, que vai captar a quantidade necessária de fótons provenientes da estrela A e encaminhá-los até nossa pupila, fazendo assim com que nosso cérebro perceba a presença da estrela ali.

Dada uma lista com estrelas no céu, o fluxo de fótons que cada uma delas emite, e área de abertura de um telescópio, dizer quantas estrelas serão perceptíveis usando tal telescópio.

Linguagens: C e C++

Solução:

Os códigos em C e C++ são equivalentes em termos lógicos. A ideia foi ler os valores "a" e "n" e depois ler "n" valores "v". Se a multiplicação de "v" por "a" for maior ou igual a 40000000, incrementa-se uma variável "r", que conterá a resposta. Ao final basta imprimir r, sem esquecer da quebra de linha.

Código em C:

#define TAM 40000000
#include <stdio.h>
int main() {
    int a, n, v, r = 0;
    scanf("%d %d", &a, &n);
    while (n--) {
        scanf("%d", &v);
        if (v * a >= TAM)
            r++;
    }
    printf("%d\n", r);
    return 0;
}

Código em C++:

#include <iostream>
int main() {
    int a, n, v, r = 0;
    std::cin >> a >> n;
    while (n--) {
        std::cin >> v;
        if (v * a >= 40000000)
            r++;
    }
    std::cout << r << std::endl;
    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