some image

Codes and Tags

Solucionando : Odd

Etiquetas: , Blog, Challenges No comments

Bien, este fue uno de los problemas que más me puso a echar cabeza jejeje. primero porque no encontraba una forma adecuada de plantear la solución y segundo porque en los primeros 3 envios obtenia un error del tipo Time Limit Exceeded.

Basicamente el problema consistia en hallar la última potencia de 2, antes de un número dado. Ejemplo :
Número : 5
2, 4 = 4 Es la potencia de dos antes del número 5 (Porque la siguiente potencia es 8)

Número : 12
2, 4, 8 = 8 Es la potencia de dos antes del número 12 (Porque la siguiente potencia es 16)

Consideraciones a tener en cuenta

+ Para optimizar código que requiere mucho proceso con números, es mejor buscar alguna formula que sea equivalente a la solución y reduzca el proceso de la aplicación.

+ Para optimizar la respuesta de un programa que maneja bucles, es mucho mejor almacenar la respuesta en un Objeto, por ejemplo
StringBuilder y luego del bucle hacer la impresión de los resultados, ya que se consume mucha más memoria
procesar e imprimir en cada iteración.

Solución

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Odd {
	public static void main(String[] args) throws IOException{
		//Objeto para la lectura de datos por teclado
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		//Cantidad de entradas a procesar en el programa
		int lines = Integer.parseInt(br.readLine());
		//Objeto para almacenar los resultados
		StringBuilder sb = new StringBuilder();
		//Ingreso de todas las entradas y almacenamiento de la respuesta
		for (int i = 0; i < lines; i++) {
			int members = Integer.parseInt(br.readLine());
			sb.append(getCrewMember(members)).append("\n");
		}
		//Impresión del resultado
		System.out.println(sb);
	}
	
	/**
	 *  Metodo que se encarga de obtener la última potencia de 2, antes de un número dado
	 **/
	public static int getCrewMember(int m){
		int member = 2;
		while(member * 2 <= m){
			member *= 2;
		}
		return member;
	}
}

About Edwin Torres

Related Posts

  • Code Chef Logo
  • Code Chef Logo
  • Code Chef Logo
  • Code Chef Logo

Add your comment