Desafio 1
Enunciado
Resolução em Java
import java.util.*; class grav { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); sc.nextLine(); while(n > 0) { n--; String nome = sc.nextLine(); String massaStr = sc.nextLine(); int raio = Integer.parseInt(sc.nextLine())*1000; String[] massaPartes = massaStr.split(" x "); String[] notacaoCientifica = massaPartes[1].split(" xx "); double massa = Double.parseDouble(massaPartes[0])*Math.pow(10, Integer.parseInt(notacaoCientifica[1])); double g = 6*Math.pow(10, -7); double gravidade = (g*massa)/Math.pow(raio, 2); double peso = 100*1000*gravidade; System.out.println("Planeta: " + nome + "."); if(peso <= 1.5*Math.pow(10, 10)) { System.out.println("Eh seguro aterrissar neste planeta, pois sua estrutura aguentaria"); } else { System.out.println("Nao eh seguro aterrissar neste planeta, pois sua estrutura cederia"); } } } }
Resolução em C++
int main() { //Define as constantes double G = 6*(pow(10, -7)); double minhaM = 100000.0; double maxim = 1.5*(pow(10.0,10.0)); int n; cin >> n; //Recebe o numero de casos for(int i = 0; i < n; i++) //Para cada caso de teste { double massa, raio; string nome; //Recebe o nome do planeta cin >> nome; double m; string lixo; cin >> massa >> lixo >> lixo >> lixo >> m; //Recebe a massa e a potencia massa = massa*(pow(10, m)); cin >> raio; //Recebe o raio raio = raio*1000; float g = (G*massa)/(raio*raio); float p = minhaM*g; cout << "Planeta: " << nome << "." << endl; //Printa o nome //Printa as resoluções if(p < maxim) { cout << "Eh seguro aterrissar neste planeta, pois sua estrutura aguentaria" << endl; } else { cout << "Nao eh seguro aterrissar neste planeta, pois sua estrutura cederia" << endl; } } }
Desafio 2
Enunciado
Resolução em Java
import java.util.*; class queijo { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); sc.nextLine(); while(n > 0) { n--; String queijosStr = sc.nextLine(); String[] queijosStrSep = queijosStr.split(" "); int pesoMax = 200; //Ordem: RBGC int[] pedacos = {10, 5, 3, 1}; int[] queijos = new int[4]; for(int i = 0; i < 4; i++) { queijos[i] = Integer.parseInt(queijosStrSep[i]); } //A entrada está numa ordem diferente da ordem dos pedacos, então vamos arrumar de BRCG para RBGC int[] queijosOrd = {queijos[1], queijos[0], queijos[3], queijos[2]}; int[] quantPedacos = new int[4]; int soma = 0; for(int i = 0; i < pedacos.length; i++) { int iterador = 0; while(soma + pedacos[i] <= 200 && iterador + 1 <= queijosOrd[i]) { soma += pedacos[i]; iterador++; } quantPedacos[i] = iterador; } System.out.println("B: " + quantPedacos[1] + ", R: " + quantPedacos[0] + ", C: " + quantPedacos[3] + ", G: " + quantPedacos[2]); boolean pegouTodos = true; for(int i = 0; i < queijosOrd.length; i++) { if(queijosOrd[i] != quantPedacos[i]) { pegouTodos = false; } } if(pegouTodos) { System.out.println("Todos os pedacos foram pegos"); } else { System.out.println("Nao foi possivel pegar todos os pedacos"); } } } }
Resolução em C++
#include "javalib.hpp" int main() { for(int n = jl::nextInt(); n > 0; n--) { int cap = 200; int b = jl::nextInt(), r = jl::nextInt(), c = jl::nextInt(), g = jl::nextInt(); int total = r + b + g + c; int r_t = 0, b_t = 0, g_t = 0, c_t = 0; while(cap > 0 && total > 0) { if(r_t != r && (cap - 10) >= 0) { r_t++; cap -= 10; } else if(b_t != b && (cap - 5) >= 0) { b_t++; cap -= 5; } else if(g_t != g && (cap - 3) >= 0) { g_t++; cap -= 3; } else if(c_t != c && (cap - 1) >= 0) { c_t++; cap -= 1; } total--; } std::cout << "B: " << b_t << ", R: " << r_t << ", C: " << c_t << ", G: " << g_t << std::endl; std::cout << ((total == 0) ? "Todos os pedacos foram pegos" : "Nao foi possivel pegar todos os pedacos") << std::endl; } }
Desafio 3
Enunciado
Resolução em Java
import java.util.*; class morse { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); sc.nextLine(); while(n > 0) { n--; String frase = sc.nextLine().toUpperCase(); frase = frase.replace(" ","/"); frase = frase.replace("A",".- "); frase = frase.replace("B","-... "); frase = frase.replace("C","-.-. "); frase = frase.replace("D","-.. "); frase = frase.replace("E",". "); frase = frase.replace("F","..-. "); frase = frase.replace("G","--. "); frase = frase.replace("H",".... "); frase = frase.replace("I",".. "); frase = frase.replace("J",".--- "); frase = frase.replace("K","-.- "); frase = frase.replace("L",".-.. "); frase = frase.replace("M","-- "); frase = frase.replace("N","-. "); frase = frase.replace("O","--- "); frase = frase.replace("P",".--. "); frase = frase.replace("Q","--.- "); frase = frase.replace("R",".-. "); frase = frase.replace("S","... "); frase = frase.replace("T","- "); frase = frase.replace("U","..- "); frase = frase.replace("V","...- "); frase = frase.replace("W",".-- "); frase = frase.replace("X","-..- "); frase = frase.replace("Y","-.-- "); frase = frase.replace("Z","--.. "); frase = frase.replace(" /","/"); System.out.println(frase); } } }
Resolução em C++
#include "javalib.hpp" const std::string morse[] = {".-", "-...", "-.-.", "-..", ".", "..-.", "-.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."}; int main() { int n = jl::nextInt(); jl::nextLine(); for(; n > 0; n--) { std::string line = jl::nextLine(); bool space = false; for(char ch : line) { int ch_int = ch - 'A'; if(ch_int < 0 || ch_int >= 26) { if(ch == ' ') std::cout << '/' << std::flush; else std::cout << ' ' << std::flush; space = false; } else { if(space == true) std::cout << ' ' << std::flush; std::cout << morse[ch_int] << std::flush; space = true; } } std::cout << std::endl; } }
Desafio 4
Enunciado
Resolução em Java
import java.util.Scanner; public class ComidasEspaciais { public static void main (String[] args){ //Scanner Scanner sc = new Scanner(System.in); //Valores de custo e benefício float custo; float beneficio; //Nome do produto String nome; //Vetor contendo os custos benefício float[] custoBeneficio; //Valor da resposta float resp; //Contadores de casos de teste e entradas int n = sc.nextInt(); sc.nextLine(); int m; //Loop de execução for (int i = 0; i < n; i++){ //Leitura da entrada parte A nome = sc.next(); m = sc.nextInt(); sc.nextLine(); //Preparação do vetor custoBeneficio = new float[m]; //Loop interno de execução for (int j = 0; j < m; j++){ //Leitura da entrada parte B beneficio = sc.nextFloat(); custo = sc.nextFloat(); sc.nextLine(); //Cálculo do custo benefício custoBeneficio[j] = CalcularCustoBeneficio(beneficio, custo); } //Definição do melhor cuto benefício resp = AcharMelhorCustoBeneficio(custoBeneficio); //Saída System.out.println(nome + ": " + (int)Math.ceil(resp)); } } //Função para calcular o custo benefício da opção public static float CalcularCustoBeneficio(float beneficio, float custo){ return beneficio/custo; } //Função para encontrar o valor do melhor custo benefício public static float AcharMelhorCustoBeneficio(float[] custoBeneficio){ float melhor = custoBeneficio[0]; for (int i = 0; i < custoBeneficio.length; i++){ if(custoBeneficio[i] >= melhor){ melhor = custoBeneficio[i]; } } return melhor; } }
Resolução em C++
#include "javalib.hpp" #include <math.h> int main() { //Quantidade de entradas int n; scanf("%d",&n); //Variáveis de custo e benefício int custo, beneficio; //Nome da comida char comida[25]; //Variável resposta float aux; int resp; //Iterador interno int m; //Laço de execução for (int i = 0; i < n; i++){ //Leitura da primeira entrada e preparação para o loop interno aux = 0; scanf("%s %d\n",comida,&m); //Loop de execução interno for (int j = 0; j < m; j++){ scanf("%d %d",&beneficio,&custo); if (beneficio/custo > aux) aux = beneficio/custo; } //Saída resp = ceil(aux); printf("%5s: %d",comida,resp); } return 0; }