数字排列

标题:数字排列 | 时间限制:1秒 | 内存限制:262144K | 语言限制:不限
小明负责公司年会,想出一个趣味游戏:
屏幕给出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


全部评论

相关推荐

牛客771574427号:恭喜你,华杰
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务