数字排列
标题:数字排列 | 时间限制:1秒 | 内存限制:262144K | 语言限制:不限
小明负责公司年会,想出一个趣味游戏:
屏幕给出1~9中任意4个不重复的数字,大家以最快时间给出这几个数字可拼成的数字从小到大排列位于第N位置的数字,其中N为给出的数字中最大的(如果不到这么多个数字则给出最后一个即可)。
注意:
1)2可以当做5来使用,5也可以当做2来使用进行数字拼接,且屏幕不能同时给出2和5;
2)6可以当做9来使用,9也可以当做6来使用进行数字拼接,且屏幕不能同时给出6和9。
屏幕给出1~9中任意4个不重复的数字,大家以最快时间给出这几个数字可拼成的数字从小到大排列位于第N位置的数字,其中N为给出的数字中最大的(如果不到这么多个数字则给出最后一个即可)。
注意:
1)2可以当做5来使用,5也可以当做2来使用进行数字拼接,且屏幕不能同时给出2和5;
2)6可以当做9来使用,9也可以当做6来使用进行数字拼接,且屏幕不能同时给出6和9。
def generate(nums):
res = list()
for i in nums:
res.append(i)
for j in nums:
if j != i:
res.append(i * 10 + j)
for k in nums:
if len({i, j, k}) == 3:
res.append(i * 100 + j * 10 + k)
return res
def exclude(nums):
temp = list()
for i in nums:
s = list(str(i))
if ("2" in s and "5" in s)&nbs***bsp;("6" in s and "9" in s):
continue
else:
temp.append(i)
return temp
while True:
try:
nums = list(map(int, input().split(",")))
n = max(nums)
ans = nums.copy()
if (2 in nums and 5 in nums)&nbs***bsp;(6 in nums and 9 in nums):
print(-1)
elif len(set(nums)) == 3:
print(-1)
else:
temp = nums.copy()
ref = {2: 5, 5: 2, 6: 9, 9: 6}
for key, value in ref.items():
if key in nums:
temp.append(value)
ans = generate(temp)
ans = exclude(ans)
ans = list(set(ans))
idx = min(len(ans), n)
ans.sort()
print(ans[idx - 1])
except:
break


