1023.グループの最小数(20)
0~9の数字をいくつかずつ指定します.これらの数字を任意の順序で並べることができますが、すべて使用する必要があります.目標は、最後に得られた数をできるだけ小さくすることです(0はトップになれないことに注意してください).例えば、2つの0、2つの1、3つの5、1つの8を与えて、私たちが得た最小の数は10015558です.
与えられた数字は、プログラムを作成して構成できる最小の数を出力してください.
入力形式:
各入力には1つのテスト例が含まれています.各テスト例は、1行に10個の非負の整数を与え、0、1、…9の数字を持つことを順次示す.整数間はスペースで区切られます.10個の数字の合計数は50を超えず、少なくとも1個の0以外の数字を有する.
出力フォーマット:
構成可能な最小の数を1行に出力します.サンプルを入力:
与えられた数字は、プログラムを作成して構成できる最小の数を出力してください.
入力形式:
各入力には1つのテスト例が含まれています.各テスト例は、1行に10個の非負の整数を与え、0、1、…9の数字を持つことを順次示す.整数間はスペースで区切られます.10個の数字の合計数は50を超えず、少なくとも1個の0以外の数字を有する.
出力フォーマット:
構成可能な最小の数を1行に出力します.サンプルを入力:
2 2 0 0 0 3 0 0 1 0
出力サンプル:10015558
import java.util.Scanner;
/**
* @author jwang1 Success Factors
*/
public class Main {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int a[] = new int[10];
for (int i = 0; i < 10; i++) {
a[i] = cin.nextInt();
}
if (a[0] > 0) {
for (int i = 1; i < 10; i++) {
if (a[i] != 0) {
System.out.print(i);
a[i] = a[i] - 1;
break;
}
}
for (int i = 0; i < 10; i++) {
while (a[i] != 0) {
System.out.print(i);
a[i]--;
}
}
} else {
for (int i = 0; i < 10; i++) {
while (a[i] != 0) {
System.out.print(i);
a[i]--;
}
}
}
System.out.println();
}
}