Pesquisar este blog

Livros Recomendados

sábado, 7 de outubro de 2023

URI (BEECROWD) - 2840 - Balão++ - Geometria - C, C++, Haskell

Acabei de perceber que já tinha resolvido esse exercício, mas não postei a resposta. Então, hoje trago ela aqui pra todo mundo saber como se resolve o exercício Balão++. Dessa vez, exibo a solução em três linguagens, C, C++ e Haskell. Confira!

Plataforma: URI (BEECROWD)

Problema2840

Enunciado: Espero que você esteja curtindo a competição :D.

Nós, os autores (Diego Rangel, Francisco Arcos, Gabriel Duarte e Gustavo Policarpo), estamos felizes por você estar tentando resolver nossos problemas. Para você que é iniciante não sair da sala sem nenhum balão, aqui vai um desafio para você:

Neste ano os balões têm formato esférico, segundo a empresa que produz os balões: "(...) por motivos complexos de engenharia esse formato é melhor (...)" vai entender...

Entretanto esse formato faz com que o balão use mais gás hélio e isso causou um problema, pois o organizador já havia comprado um tanque com L litros de gás antes dessa novidade no mercado de balões.

Sabendo o raio do modelo de balões e a quantidade de gás hélio disponível, você poderia ajudar a equipe dizendo quantos balões podem ser enchidos completamente?

Solução:

Basicamente, precisamos ler dois valores e manipulá-los como números de ponto flutuante.

A fórmula do volume é (4/3) * pi * r³, sendo r o primeiro valor lido.

A resposta é o piso do resultado da divisão de l (segundo valor lido) pelo volume.

Fácil, né não?

Código em Haskell:

main :: IO ()
main = do
   line <- getLine
   let [r, l] = map read (words line) :: [Double]
   let vol = (4/3) * (3.1415 * r * r * r)
   let ans = l / vol
   print (floor ans)

Código em C:

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

int main () {

	double r, l, vol, total;
	scanf("%lf %lf", &r, &l);
	vol = (4/3.0) * (3.1415 * pow(r, 3));
	total = l / vol;
	int ans = floor(total);
	printf("%d\n", ans);
	return 0;
}

Código em C++:

#include <iostream>
#include <cmath>

using namespace std;

int main () {
	double r, l;
	cin >> r >> l;
	double vol = (4/3.0) * (3.1415 * pow(r, 3));
	double total = l / vol;
	int ans = floor(total);
	cout << ans << 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