Status ¶
| Problem | 2245 | User | talin0528 |
| Memory | 5060K | Time | 266MS |
| Language | Java | Result | Accepted |
Idea ¶
(ex) k = 7 , 1 개 0 개
1111110
1111101
1111011
1110111
1101111
1011111
0111111
1111101
1111011
1110111
1101111
1011111
0111111
k = 8 1 개 0 개 ... k = 12까 게 개
Source ¶
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNextInt()){
int k = sc.nextInt();
if(k==0) System.exit(0);
int[] S = new int [k];
for(int i=0; i<k; i++)
S[i] = sc.nextInt();
printPossibleNum(S);
}
}
private static void printPossibleNum(int[] S) {
int num = (int) (Math.pow(2,S.length-6)-1);
while(num < Math.pow(2, S.length)){
int [] bin = decToBin(num);
int count = 0;
for(int i=0; i<S.length; i++){
if(bin[S.length-i-1]==0){
if(++count != 6)
System.out.print(S[i]+" ");
else
System.out.println(S[i]);
}
}
num = increase(bin);
}
System.out.println("");
}
private static int increase(int[] bin){
int num = 0, count=0;
while(num<bin.length-1){
if(bin[num] == 1){
if(bin[num+1] == 0){
bin[num+1] = 1;
bin[num] = 0;
break;
}else{
bin[num] = 0;
bin[count++] = 1;
}
}
num++;
}
int result = 0;
for(int k=0; k<bin.length;k++){
result += bin[k]*Math.pow(2,k);
}
return result;
}
private static int[] decToBin(int i){
int [] temp = new int[13];
int num = 0;
while(i>0){
temp[num++] = i%2;
i = i/2;
}
return temp;
}
}










