Skip to content

Instantly share code, notes, and snippets.

@cobymotion
Last active October 30, 2016 17:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cobymotion/6107cce952cf7f09918b161421ec73b0 to your computer and use it in GitHub Desktop.
Save cobymotion/6107cce952cf7f09918b161421ec73b0 to your computer and use it in GitHub Desktop.
Solution of problem: "Simple dishes"
import java.util.*;
public class Main{
//List para almacenar los numeros de cada uno de los casos, tendría la misma finalidad del arreglo
//La diferencia de esta es que no necesitamos especificarle el tamaño total
//Ademas podemos manejar genericos (<>) que significa que nuestra lista considerara que todos son enteros
// por lo tanto cuando las utilicemos podra usar las funciones especificas a Integer
private static List<Integer> cant =new ArrayList<Integer>();
public static void main(String []args){
//Clase para hacer la lectura
Scanner sc = new Scanner(System.in);
//pedimos el numero de casos
int numCase=sc.nextInt();
//hacemos un ciclo para el numero de casos
for(int i=0;i<numCase;i++)
{
//obtenemos el primer numero del caso
Integer num = new Integer(sc.nextInt());
//si el numero es cero, simplemente cortamos el ciclo y lo continuamos
if(num==0)
continue;
// si es mayor que uno, entonces lo convertimos en una cadena correspondiente a su binario
String cad = Integer.toBinaryString(num);
//recorremos la cadena en orden inverso
for(int j=cad.length()-1;j>=0;j--)
// cada que encuentre un 1, entonces imprimimos la posicion restando la longitud menos lo que se avanzo
if(cad.charAt(j)=='1')
System.out.print(cad.length()-j-1 + " "); // no lleva salto de linea porque va imprimiendo numero a numero
System.out.println(""); // imprimimos el salto de linea para dejarlo listo para el siguiente caso
} // fin del for de casos
} // fin del main
} //fin de la clase
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment