Probleminha Ad-Hoc sendo resolvido para vocês! Esse problema é simples, mas interessante por trabalhar com funções de raiz (ou potência) e, pelo menos na minha solução, com conversão explícita (coerção/casting). Veja mais abaixo para entender do que eu estou falando! Ah, e compare com as suas soluções. Você fez diferente? Manda nos comentários a sua solução! :)
Plataforma: URI (BEECROWD)
Problema: 1573
Enunciado:
Uma fábrica produz barras de chocolates no formato de paralelepípedos e de cubos, com o mesmo volume. Porém, como a máquina que produz os chocolates em formato de cubo está apresentando alguns problemas, os donos da fábrica pediram a sua ajuda para resolver este problema.
Sua tarefa é, dadas as dimensões das arestas do chocolate em formato de paralelepípedo, dizer qual é o tamanho que a aresta em formato de cubo deve ter.
Linguagens: C e C++
Solução:
Aqui a solução em C e a primeira solução em C++ seguem a mesma lógica. Basta criar um laço de repetição infinito, ler os três valores e verificar se todos são zero, pois esta é a condição de parada. Se for, interrompe a execução do laço de repetição. Se não for, imprime a raiz cúbica de a * b * c. No entanto, a raíz cúbica retorna um valor double, então é necessário fazer a coerção de tipo (casting) para tornar a resposta um valor inteiro. Depois é só imprimir este valor!
Código em C:
#include <stdio.h> #include <math.h> int main() { int a, b, c; while (1) { scanf("%i %i %i", &a, &b, &c); if (a == 0 && b == 0 && c == 0) break; printf("%i\n", (int) cbrt(a * b * c)); } return 0; }
#include <iostream> #include <cmath> using namespace std; int main() { int a, b, c; while (1) { cin >> a >> b >> c; if (a == 0 && b == 0 && c == 0) break; cout << (int) cbrt(a * b * c) << endl; } return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 | #include <iostream> #include <cmath> using namespace std; int main() { int n1, n2, n3; while(cin >> n1 >> n2 >> n3){ if(n1==0 and n2==0 and n3==0) return 0; cout << int(pow(n1*n2*n3,(1.0/3))) << endl; } } |