首页 > 试题广场 >

数位重排

[编程题]数位重排
  • 热度指数:26 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
牛牛有一个正整数x,牛牛需要把数字x中的数位进行重排得到一个新数(不同于x的数),牛牛想知道这个新数是否可能是原x的倍数。请你来帮他解决这个问题。

输入描述:
输入包括t+1行,第一行包括一个整数t(1 ≤ t ≤ 10),
接下来t行,每行一个整数x(1 ≤ x ≤ 10^6)


输出描述:
对于每个x,如果可能重排之后变为自己的倍数输出"Possible", 否则输出"Impossible".
示例1

输入

2
14
1035

输出

Impossible
Possible
import itertools


def process(num):
    all_permutations = itertools.permutations(str(num))
    for each in all_permutations:
        change = int(''.join(each))
        if change != num and change > num:
            if change % num == 0:
                print("Possible")
                return
    print("Impossible")


if __name__ == "__main__":
    t = int(input())
    for i in range(t):
        process(int(input()))
编辑于 2019-08-02 23:07:13 回复(0)