PTA(BasicLevel)-1023は、最小数を設定します

まず、問題を定義します

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))

 

おすすめ

転載: www.cnblogs.com/justLittleStar/p/11729527.html