题目链接在此。
思路
要输出最小的数,那么高位的数一定要比低位的数小才行。又因为第一位不能是0,所以第一位就需要从1~9中输出存在的最小的那个,然后接下来的那些位就依次输出0~9各自有的个数。
AC代码
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int num[10];
int main(){
int index = 0;
int temp;
while(scanf("%d",&temp) != EOF){
num[index++] = temp;
}
//拿到第一位(除去0以外的最小的那个)
for(int i = 1; i < 10; i++){
if(num[i] > 0){
printf("%d",i);
num[i]--; //对应数字个数-1
break;
}
}
//从小到大输出每个数字的所有数字
for(int i = 0; i < 10; i++){
for(int j = 0; j < num[i]; j++){
printf("%d",i);
}
}
return 0;
}