输入包括t+1行,第一行包括一个整数t(1 ≤ t ≤ 10), 接下来t行,每行一个整数x(1 ≤ x ≤ 10^6)
对于每个x,如果可能重排之后变为自己的倍数输出"Possible", 否则输出"Impossible".
2 14 1035
Impossible Possible
import java.util.*; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); for(int i=0; i<n; i++) { int org = in.nextInt(); int o = org; ArrayList<Integer> tmpl = new ArrayList<>(); while(o != 0) { int t = o%10; tmpl.add(t); o = o/10; } int[] tmp = new int[tmpl.size()]; for(int j=tmpl.size()-1; j>=0; j--) { tmp[tmpl.size()-1-j] = tmpl.get(j); } ArrayList<Integer> rec = new ArrayList<>(); int[] flag = new int[1]; dfs(tmp, rec, flag, org); if(flag[0] == 0) { System.out.println("Impossible"); } else { System.out.println("Possible"); } } } public static void dfs(int[] tmp, ArrayList<Integer> rec, int[] flag, int org) { if(flag[0] == 1) return; if(rec.size() == tmp.length) { int t = 0; for(int i=0; i<rec.size(); i++) { t = t*10 + rec.get(i); } if (t!=org && t%org == 0) flag[0] = 1; return; } else { for(int i=0; i<tmp.length; i++) { if(tmp[i]>=0) { int t = tmp[i]; tmp[i] = -1; rec.add(t); dfs(tmp, rec, flag, org); rec.remove(rec.size()-1); tmp[i] = t; } } } } }
import java.util.ArrayList; import java.util.Arrays; import java.util.Scanner; public class Digitalrearrangement { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int num[] = new int[n]; ArrayList<String> arrayList = new ArrayList<String>(); for (int i = 0; i < n; i++) { num[i] = scanner.nextInt(); if (canrearrange(num[i]) == true) { arrayList.add("Possible"); } else { arrayList.add("Impossible"); } } for (int i = 0; i < arrayList.size(); i++) { System.out.println(arrayList.get(i)); } } public static boolean canrearrange(int num) { int n = String.valueOf(num).length(); int[] letter = new int[n]; int temp = num; for (int i = 0; i < n; i++) { letter[i] = temp % 10; temp /= 10; } int[] letter_tmp = new int[n]; for (int i = 2; String.valueOf(num * i).length() == n; i++) { int tmp = num * i; for (int j = 0; j < n; j++) { letter_tmp[j] = tmp % 10; tmp /= 10; } int[] tmp_letter = new int[n]; tmp_letter = letter; Arrays.sort(tmp_letter); Arrays.sort(letter_tmp); if (Arrays.equals(tmp_letter, letter_tmp)) { return true; } } return false; } }} }
import java.util.*; public class demo4 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] arr = new int[n]; for (int i = 0; i < n; i++) { arr[i] = sc.nextInt(); } for (int i = 0; i < n; i++) { System.out.println(solve(arr[i])); } } private static String solve(int n) { int[] arr1 = toArr(n); Arrays.sort(arr1); for (int i = 2; i <= 9; i++) { int s = n * i; int[] arr2 = toArr(s); Arrays.sort(arr2); if (Arrays.equals(arr1,arr2)) { return "Possible"; } } return "Impossible"; } private static int[] toArr(int n) { int a = String.valueOf(n).length();// n的长度 int[] arr2 = new int[a]; String str = String.valueOf(n); for (int i = 0; i < a; i++) { arr2[i] = str.charAt(i); } return arr2; } }写的比较差,,,见笑了
import java.util.*; /** * @author 王志昊 * @date 2018.8.10 */ public class Main30 { static char[] chars; static Integer input; static Set<Integer> set; public static void main(String[] args) { Scanner in =new Scanner(System.in); int t =in.nextInt(); String str = in.nextLine();; for (int k = 0; k < t; k++) { str = in.nextLine(); chars = str.toCharArray(); input = Integer.valueOf(str); set =new HashSet<>(); Arrays.sort(chars); set.add(Integer.valueOf(String.valueOf(chars))); boolean stop = false; int i,j;int n = chars.length; while (!stop){ stop = true; i = n-2; j = n-1; while (i >= 0 && chars[i] >= chars[i+1]){ i--; } if (i<0) break; while (chars[j] <= chars[i]){ j--; } if (j > i) { swap(i,j); reverse(i+1, n-1); stop =false; set.add(Integer.valueOf(String.valueOf(chars))); } } set.remove(input); Iterator<Integer> iterator= set.iterator(); boolean flag = false; while (iterator.hasNext()){ if (iterator.next()%input == 0){ flag =true; System.out.println("Possible"); break; } } if (!flag) System.out.println("Impossible"); } } private static void reverse(int i, int j) { while(i<j){ char temp = chars[i]; chars[i++] = chars[j]; chars[j--] = temp; } } private static void swap(int i, int j) { char temp = chars[i]; chars[i] = chars[j]; chars[j] = temp; } }