Desafio 1
Enunciado
Resolução em Java
import java.util.Scanner; class DesafioMedio { static int[] counter(String[] eventos) { int[] aux = {0, 0, 0}; for(int i = 0; i < eventos.length; i++) aux[Integer.parseInt(eventos[i])]++; return aux; } static int[] probabilizador(String str) { int[] probs = {0, 0, 0, 0}; int[] evento = counter(str.split(" ")); int total = evento[0] + evento[1] + evento[2]; double i = (double)(evento[1] + evento[2]) / total; double iv = (double)(evento[2]) / total; double f = (double)(evento[0]) / total; double sv = (double)(evento[2]) / (evento[1] + evento[2]); probs[0] = (int)Math.floor(i*100); probs[1] = (int)Math.floor(iv*100); probs[2] = (int)Math.floor(f*100); probs[3] = (int)Math.floor(sv*100); return probs; } static String respostador(int[] aux) { String temp = ""; temp = (aux[0] + "% " + aux[1] + "% " + aux[2] + "% " + aux[3] + "%"); if(aux[1] < 60) temp += "\nNao vamo nao mano"; else temp += "\nEh nois em Andromeda"; return temp; } public static void main(String[] args) { Scanner sc = new Scanner(System.in); int input_size = Integer.parseInt(sc.nextLine()); String[] input = new String[input_size]; for(int i = 0; i < input_size; i++) input[i] = sc.nextLine(); for(int i = 0; i < input_size; i++) { System.out.println(probabilizador(input[i])); } System.out.println(); } }
Resolução em C++
Desafio 2
Enunciado
Resolução em Java
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int n = scan.nextInt(); scan.nextLine(); //limpando a quebra de linha pois em algumas versoes do java o nextInt nao pega o \n, assim, apos o nextInt ele persiste na string de entrada String resposta = ""; for(int m = 0; m < n; m++){ int tamanho = scan.nextInt(); scan.nextLine(); //limpando quebra de linha da entrada int[][] campo = new int[tamanho][tamanho]; //preenchendo campo for(int i = 0; i < campo.length; i++) { for(int j = 0; j < campo[0].length; j++) { campo[i][j] = scan.nextInt(); } } //verificando todas as possibilidades if (combinacoes(campo)){ resposta += "Dizimados!\n"; } else{ resposta += "Recuar!\n"; } } System.out.print(resposta); } public static int[][] copy(int[][] m) { int[][] copy = new int[m.length][m[0].length]; for(int i = 0; i < m.length; i++) { for(int j = 0; j < m[< /span>0].length; j++) { copy[i][j] = m[i][j]; } } return copy; } public static int bomba(int i, int j, int[][] campo) { int dano = 0; if((j-1) >= 0 && campo[i][j-1] != 0){ //esquerda campo[i][j-1]--; dano++; } if((j+1) < campo.length && campo[i][j+1] != 0) { //direita campo[i][j+1]--; dano++; } if((i+1) < campo.length && campo[i+1][j] != 0) { //cima campo[i+1][j]--; dano++; } if((i-1) >= 0 && campo[i-1][j] != 0) { //baixo campo[i-1][j]--; dano++; } if(campo[i][j] != 0) { //centro campo[i][j]--; dano++; } return dano; } public static boolean combinacoes(int[][] campo) { //contando a quantidade de dano que deve ser causada int danoTotal = 0; for(int i = 0; i < campo.length; i++) { for(int j = 0; j < campo[0].length; j++) { danoTotal += campo[i][j]; } } //verificando toda combinacao possivel de jogar as bombas for(int i = 0; i < campo.length; i++) //linha da 1 bomba for(int j = 0; j < campo[0].length; j++) //coluna da 1 bomba for(int k = 0; k < campo.length; k++) //linha da 2 bomba for(int l = 0; l < campo[0].length; l++) //coluna da 2 bomba for(int p = 0; p < campo.leng th; p++) //linha da 3 bomba for(int q = 0; q < campo[0].length; q++) { //coluna da 3 bomba int[][] aux = copy(campo); //copia a matriz original pois vamos alterar if(bomba(i,j,aux) + bomba(k,l,aux) + bomba(p,q,aux) == danoTotal) //se jogar as 3 bombas nesses locais causa um dano igual ao total de dano que eu deveria causar nas naves eu dizimei return true; } return false; } }
Resolução em C++
Desafio 3
Enunciado
Resolução em Java
import java.util.*; public class Codinome { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String entrada = ""; while(true) { entrada = sc.nextLine(); String[] nomes = entrada.split(" "); if(nomes.length != 2) break; char[] nome = nomes[0].toCharArray(); char[] sobr = nomes[1].toCharArray(); int menorNome = 0; if(nome.length <= sobr.length) { menorNome = nome.length; } else { menorNome = sobr.length; } for(int i = 0; i < menorNome; i++) { if(nome[i] != sobr[i]) { char aux = nome[i]; nome[i] = sobr[i]; sobr[i] = aux; break; } } String novoNome = new String(nome); String novoSobr = new String(sobr); String resp = novoNome + " " + novoSobr; if(resp.equals(entrada)) System.out.println("Eita, vamos ter que te chamar de Roberto"); else System.out.println(resp); } } }
Resolução em C++
Desafio 4
Enunciado
Resolução em Java
import java.util.*; class BuracoNegro { public static void main(String[] args){ Scanner sc = new Scanner(System.in); String linha = sc.nextLine(); while(!linha.equals("0")){ String vetor[] = linha.split(" "); int soma = 0; for(int i = 0; i < vetor.length; i += 2){ soma += Integer.parseInt(vetor[i]); } System.out.println(soma); linha = sc.nextLine(); } } }
Resolução em C++