Skip to content

Instantly share code, notes, and snippets.

@gusalbukrk
Created August 9, 2025 23:16
Show Gist options
  • Select an option

  • Save gusalbukrk/66c44831e4813f56f895ab86a7bd40f5 to your computer and use it in GitHub Desktop.

Select an option

Save gusalbukrk/66c44831e4813f56f895ab86a7bd40f5 to your computer and use it in GitHub Desktop.
#sonarqube

Maratona 2022 - Resoluções

A - Medição Climática

import java.util.Arrays;
import java.util.Scanner;

class Main {
 public static void main(String[] args) {
 Scanner s = new Scanner(System.in);

 int dias = s.nextInt();
 int porDia = s.nextInt();

 double[][] medicoes = new double[dias][porDia];

 for (int i = 0; i < dias; i++) {
 for (int j = 0; j < porDia; j++) {
 medicoes[i][j] = s.nextDouble();
 }
 }

 s.close();

 System.out.println("-Media das medicoes dos dias-");

 for (int i = 0; i < dias; i++) {
 System.out.printf("Dia %d: ", i);
 System.out.printf("%.2f\n", Arrays.stream(medicoes[i]).reduce((acc, cur) -> acc + cur).getAsDouble() / porDia);
 }
 
 System.out.println("-Media de cada medicao diaria -");

 for (int i = 0; i < porDia; i++) {
 System.out.printf("Medicao %d: ", i);

 double soma = 0.0;

 for (int j = 0; j < dias; j++) {
 soma += medicoes[j][i];
 }

 System.out.printf("%.2f\n", soma / dias);
 }

 // System.out.println(Arrays.deepToString(medicoes));
 }
}

C - Divisão

import java.util.Scanner;

class Main {
 public static void main(String[] args) {
 Scanner scanner = new Scanner(System.in);

 int dividendo = scanner.nextInt();
 int divisor = scanner.nextInt();

 int quociente = dividendo / divisor;

 for (int i = 1; i < quociente; i++) {
 System.out.println(dividendo - divisor maratona-2022.md i);
 }

 System.out.println(dividendo % divisor);
 System.out.println(quociente);

 scanner.close();
 }
}
import java.util.Scanner;

class Main {
 public static void main(String[] args) {
 Scanner scanner = new Scanner(System.in);

 int dividendo = scanner.nextInt();
 int divisor = scanner.nextInt();

 int i = 0;
 while (dividendo >= divisor) {
 i++;
 dividendo -= divisor;

 if (dividendo >= divisor) System.out.println(dividendo);
 }

 System.out.println(dividendo);
 System.out.println(i);

 scanner.close();
 }
}

E - Números primos

import java.util.Scanner;

class Main {
 // 
 public static boolean isPrime(int n) {
 // 2 is the only even prime number
 if (n > 2 && n % 2 == 0) return false;

 // if num is divisible by any number greater than its square root,
 // then the result of the division would also be a number smaller than the square root
 // this would have already been checked in previous iterations
 for (int i = 3; i <= Math.sqrt(n); i += 2) {
 if (n % i == 0) return false;
 }

 return true;
 }

 public static void main(String[] args) {
 Scanner scanner = new Scanner(System.in);

 int n = scanner.nextInt(); // n primeiros números primos
 int x = scanner.nextInt() maratona-2022.md 2; // a partir do dobro de x

 while (n != 0) {
 if (isPrime(x)) {
 System.out.println(x);
 n--;
 }

 x++;
 }

 scanner.close();
 }
}

I - Conversão de bases

import java.util.Scanner;

class Main {
 public static void main(String[] args) {
 Scanner scanner = new Scanner(System.in);
 int n = scanner.nextInt();
 scanner.close();

 String binary = "";

 while (n != 1) {
 if (n % 2 == 0) {
 binary += "0";
 } else {
 binary += "1";
 n -= 1;
 }

 n /= 2;
 }
 binary += "1";
 
 System.out.println(new StringBuilder(binary).reverse().toString());
 }
}

J - Sequência de bits

import java.util.Scanner;

class Main {
 // pad with 0s
 // direcao: 0 = end, 1 start
 public static String pad(String str, int posicao, int quantidade) {
 for (; quantidade > 0; quantidade--) {
 if (posicao == 0) {
 str += "0";
 } else {
 str = "0" + str;
 }
 }

 return str;
 }

 public static void main(String[] args) {
 Scanner s = new Scanner(System.in);
 String binarioInput = s.next();
 // 0 = << (esquerda, add 0s to end); 1 = >> (direita, add 0s to start)
 int deslocamento = s.nextInt();
 int quantidade = s.nextInt();
 s.close();

 // pad start to achieve length 8
 binarioInput = pad(binarioInput, 1, 8 - binarioInput.length());
 
 binarioInput = pad(binarioInput, deslocamento, quantidade);

 int start = deslocamento == 1 ? 0 : quantidade;
 for (int i = start; i < start + 8; i++) {
 System.out.println(binarioInput.charAt(i));
 }
 }
}
import java.util.Scanner;
import java.util.Arrays;

class Main {
 public static void main(String[] args) {
 Scanner s = new Scanner(System.in);
 String binarioInput = s.next();
 int deslocamento = s.nextInt(); // 0 = << (esquerda); 1 = >> (direita)
 int quantidade = s.nextInt();
 s.close();

 // create array and fill it with 0s to achieve length equal to 8
 int[] binario = new int[8];
 Arrays.fill(binario, 0);
 //
 int start = 8 - binarioInput.length();
 for (int i = start; i < 8; i++) {
 binario[i] = Integer.parseInt(Character.toString(binarioInput.charAt(i - start)));
 }

 // desloca
 if (deslocamento == 0) {
 for (int i = 0; i < 8; i++) {
 if (i + quantidade < 8) { // desloca
 binario[i] = binario[i + quantidade];
 } else { // preenche com 0
 binario[i] = 0;
 }
 }
 } else {
 for (int i = 7; i >= 0; i--) {
 if (i - quantidade >= 0) { // desloca
 binario[i] = binario[i - quantidade];
 } else { // preenche com 0
 binario[i] = 0;
 }
 }
 }

 for (int bit : binario) {
 System.out.println(bit);
 }
 }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment