首页 > 试题广场 >

数位重排

[编程题]数位重排
  • 热度指数:60 时间限制: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
n = input()
n = int(n)
for i in range(n):
    s = input()
    slt = []
    for j in s:
        slt.append(j)
    slt.sort()
    slt.reverse()
    sma = ''
    for j in slt:
        sma+=j
    sma = int(sma)
    if sma%int(s)==0 and sma!=int(s):
        print("Possible")
    else:
        time = sma//int(s)
        boo = True
        for j in range(2,time+1):
            st = str(j*int(s))
            temp = list(slt) 
            for k in st:
                if k in temp:
                    temp.remove(k)
                else:
                    break
            if not temp:
                print("Possible")
                boo = False
                break
        if boo:
            print("Impossible")

发表于 2018-12-27 22:20:53 回复(0)
宜头像
importjava.util.Scanner;
 
publicclassMain {
    staticString result="Impossible";
    publicstaticvoidsort(inta[],intbegin,intend,intold) {
        if(begin==end) {
            StringBuffer str=newStringBuffer("");
            for(inti=0;i<a.length;i++) {
                str.append(a[i]);
            }
            String string=str.toString();
            inttemp=Integer.parseInt(string);
            if(temp!=old) {
            if(temp%old==0) {
                result="Possible";
                }
            }
        }
        for(inti=begin;i<=end;i++) {
            inttemp=a[begin];
            a[begin]=a[i];
            a[i]=temp;
            sort(a, begin+1, end, old);
            inttemp1=a[begin];
            a[begin]=a[i];
            a[i]=temp1;
        }
    }
    publicstaticvoidallSort(String str,intold) {
        char[]c=str.toCharArray();
        int[]a=newint[c.length];
        for(inti=0;i<a.length;i++) {
            a[i]=c[i]-'0';
        }
        sort(a,0,a.length-1,old);
    }
    publicstaticvoidmain(String[] args) {
        Scanner in=newScanner(System.in);
        introw=in.nextInt();
        in.nextLine();
        for(inti=0;i<row;i++) {
            String str=in.nextLine();
            intold=Integer.parseInt(str);
            allSort(str,old);
            System.out.println(result);
            result="Impossible";
        }          
    }
}
发表于 2018-08-10 14:59:57 回复(0)