给定数字0-9各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意0不能做首位)。例如:
给定两个0,两个1,三个5,一个8,我们得到的最小的数就是10015558。
现给定数字,请编写程序输出能够组成的最小的数。
每个输入包含1个测试用例。每个测试用例在一行中给出10个非负整数,顺序表示我们拥有数字0、数字1、……数字9的个数。整数间用一个空
格分隔。10个数字的总个数不超过50,且至少拥有1个非0的数字。
在一行中输出能够组成的最小的数。
2 2 0 0 0 3 0 0 1 0
10015558
L = [eval(i) for i in input().split()] L = [str(i)*j for i,j in enumerate(L)] L = list(''.join(L)) for i,j in enumerate(L): if j != '0': break L[0], L[i] = L[i], L[0] print(''.join(L))
# -*- coding:utf-8 -*-
if __name__ == '__main__':
c_num = list(map(int, input().split()))
minx = 0
str1 = ''
if c_num[0]:
for i in range(1, 10):
if c_num[i]:
str1 += str(i) + '0' * c_num[0] + str(i) * (c_num[i] - 1)
minx = i
break
for i in range(minx + 1, 10):
str1 += str(i) * c_num[i]
else:
for i in range(1, 10):
str1 += str(i) * c_num[i]
print(str1)
ls=list(map(int,input().split())) if ls[0]==0: for i in range(1,len(ls)): print(ls[i]*str(i),end='') else: flog=0 for j in range(1,len(ls)): if flog==0: if ls[j]==0: continue else: print(str(j)+ls[0]*'0',end='') flog=1 print((ls[j]-1)*str(j),end='') continue print(ls[j]*str(j),end='') 新手,多多指教
output = "" List1 = [] List = [i for i in input().split()] for i in range(len(List)): for j in range(int(List[i])): List1.append(i) for i in range(len(List1)): if List1[i] != 0: List1[0],List1[i] = List1[i],List1[0] break for i in List1: output += str(i) print(output)
已经按从小到大开始加入到数组中了,所以只要在查找过程中找到一个非零数弹出插入到第一位即为最小数
while True: try: digitList = list(map(int,input().split())) numList = [] getFirstNum = False for i in range(10): for j in range(digitList[i]): numList.append(i) if not getFirstNum and i != 0: numList.insert(0,numList.pop(-1)) getFirstNum = True print("".join(map(str,numList))) except Exception: break
arr = input().split() num = '' for n in range(1, 10): if arr[n] != '0': num += str(n) arr[n] = str(int(arr[n])-1) break for n in range(10): num += str(n) * int(arr[n]) print(num)