输入包括t+1行,第一行包括一个整数t(1 ≤ t ≤ 10), 接下来t行,每行一个整数x(1 ≤ x ≤ 10^6)
对于每个x,如果可能重排之后变为自己的倍数输出"Possible", 否则输出"Impossible".
2 14 1035
Impossible Possible
import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int t = Integer.parseInt(br.readLine()); while(t-- > 0){ String str = br.readLine(); char[] chars = str.toCharArray(); int num = Integer.parseInt(str); List<Integer> res = new ArrayList<>(); permutation(chars, 0, res); boolean flag = false; for(int candicate: res){ if(candicate != num && candicate % num == 0){ flag = true; break; } } if(flag){ System.out.println("Possible"); }else{ System.out.println("Impossible"); } } } private static void permutation(char[] num, int index, List<Integer> res) { if(index == num.length){ if(num[0] != '0'){ res.add(Integer.parseInt(String.valueOf(num))); } }else{ for(int i = index; i < num.length; i++){ swap(num, index, i); permutation(num, index + 1, res); swap(num, index, i); } } } private static void swap(char[] chars, int i, int j) { if(i != j){ char temp = chars[i]; chars[i] = chars[j]; chars[j] = temp; } } }