PAT 1023組の個の最小数は0-9の各いくつかの個を与える.これらの数字を任意の順序で並べることができますが、すべて使用する必要があります.目標は、最後に得られた数をできるだけ小さくすることである.例えば、0 2つ、1つ、3つ、5つ、8を2つ与えて得られた数字は10015558である.
1023組の最小数(20点)
0~9の数字をいくつかずつ指定します.これらの数字を任意の順序で並べることができますが、すべて使用する必要があります.目標は最後に得られた数をできるだけ小さくすること(注意0はトップにならない).たとえば、2つの0、2つの1、3つの5、1つの8が与えられ、私たちが得た最小数は10015558です.
与えられた数字は、プログラムを作成して構成できる最小の数を出力してください.(タイトルソースPAT、侵入削除)
入力形式:入力は1行に10個の非負の整数を与え、順序は私たちが数字0、数字1、......数字9の個数を持っていることを示す.整数間はスペースで区切られます.10個の数字の合計数は50を超えず、少なくとも1個の0以外の数字を有する.≪出力フォーマット|Output Format|emdw≫:1行に構成できる最小数を出力します.
入力サンプル:2 2 0 0 0 3 0 1 0出力サンプル:10015558
-----------------------------------------------------------------------------------------------------------------------------------------------
構想
表示
0~9の数字ごとの個数を1つの配列で表す
int flag[10]={0};
まず0を除いて最小の1つの数字を出力して、一回だけ出力して、それから0を出力して、それから数字を小さいから大きいまで出力します
解決策は下記↓
1.0以外の最小値を出力し、1回のみ出力する
-------------------------------------------------------------------------------------------------------------------------
コード#コード#
0~9の数字をいくつかずつ指定します.これらの数字を任意の順序で並べることができますが、すべて使用する必要があります.目標は最後に得られた数をできるだけ小さくすること(注意0はトップにならない).たとえば、2つの0、2つの1、3つの5、1つの8が与えられ、私たちが得た最小数は10015558です.
与えられた数字は、プログラムを作成して構成できる最小の数を出力してください.(タイトルソースPAT、侵入削除)
入力形式:入力は1行に10個の非負の整数を与え、順序は私たちが数字0、数字1、......数字9の個数を持っていることを示す.整数間はスペースで区切られます.10個の数字の合計数は50を超えず、少なくとも1個の0以外の数字を有する.≪出力フォーマット|Output Format|emdw≫:1行に構成できる最小数を出力します.
入力サンプル:2 2 0 0 0 3 0 1 0出力サンプル:10015558
-----------------------------------------------------------------------------------------------------------------------------------------------
構想
表示
0~9の数字ごとの個数を1つの配列で表す
int flag[10]={0};
まず0を除いて最小の1つの数字を出力して、一回だけ出力して、それから0を出力して、それから数字を小さいから大きいまで出力します
解決策は下記↓
1.0以外の最小値を出力し、1回のみ出力する
for(i=1;i<10;i++)
{
if(flag[i]!=0)
{
printf("%d",i);
flag[i]--; // 1, 0 1 i;
break; //
}
}
-------------------------------------------------------------------------------------------------------------------------
コード#コード#
#include
int main()
{
int flag[10]={
0};
int i,j;
for(i=0;i<10;i++)
scanf("%d",&flag[i]);
for(i=1;i<10;i++)
{
if(flag[i]!=0)
{
printf("%d",i);
flag[i]--;
break;
}
}
for(i=0;i<10;i++)
{
for(j=0;j<flag[i];j++)
{
printf("%d",i);
}
}
printf("
");
return 0;
}