数字排列
标题:数字排列 | 时间限制: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