#include <stdio.h>
int main()
{
int min; //记录最小数
int mark; //一个标记
int a[10]; //用这个数组的下标代表0~9数字,输入的数代表每个数字的个数
int b[100];//用来存放所有数字
int j=0;
for(int i=0;i<10;i++)
scanf("%d",&a[i]); //输入每个数字个数
for(int i=0;i<10;i++) //将所有数字存入数组b
{
for(int k=1;k<=a[i];k++) //每个数字有几个就存几个
{
b[j]=i;
j++;
}
}
for(int i=1;i<10;i++) //这一层循环决定输出最小数的第一位,0不能做第一位,找出比0大的最小的数输出一个,注意只输出一个,并让这个数的a[i](数量)减1。
{
if(a[i]!=0)
{
mark=i; //标记比零大的最小数
printf("%d",i);
a[i]--;
break;
}
}
for(int k=1;k<=a[0];k++) //从0开始把剩下的数全输出
printf("0");
for(int i=mark;i<10;i++) //从剩下的比0大的最小数继续输出
for(int k=1;k<=a[i];k++)
printf("%d",i);
return 0;
}
示例输入2 2 0 0 0 3 0 0 1 0
输出10015558