まず、問題を定義します
0-9は、各番号を付し。あなたは、任意の順序でこれらの数字を手配することができますが、十分に活用されなければなりません。目標は、(最初の0に注意を払っていない)可能な限り結果の数は限り小さくすることです。
たとえば、2つの0を考えると、1 2、3 5、8、我々は最小数は10015558です取得します。最小数は現在番号が付与され、プログラムの出力を記入してください構成することができます。
入力フォーマット:
入力10は、行の非負の整数が与えられ、我々は、シーケンス番号0、数1、数9の数を表し有する....... 整数の間のスペースで区切られています。10桁の合計数は50以下であると、少なくとも1つの非ゼロ数字を有しています。
出力フォーマット:
行の最小数は、その出力することができます。
サンプル入力:
2 2 0 0 0 3 0 0 1 0
出力例:
10015558
第二に、問題解決
= NUMS [INT(BI)のための BI における STR(INPUT())スプリット(" " )]
#まず、最小の非ゼロの数、最上位ビットを見つける
=分0
用 I における範囲(1、10。 ):
IF NUMS ![I] = 0:
分 = I
NUMS [I] - = 1。
BREAK
数 = 分
#大スプライシングに小さな残数
DEFのconcat_by_mult(番号、NUMS)
用 I における範囲(10 ):
IF NUMS [ I] =!0:
についてJ での範囲(NUMS [I]):
数 =数* 10 + iの
返却数を
デフは(数、NUMS)concat_char:
番号 = STR(数)
のために、私に範囲(10 ):
場合 NUMS [I] =!0:
用 J における範囲(NUMS [I]):
番号 =番号+ STR(I)
の戻り番号
プリント(concat_char(数、NUMS))