Resoluções da Etapa 2

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;
}

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *