import java.util.*; public class Main { static int[] a = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; static int ans; public static void main(String[] args) { f(0); System.out.println(ans / 2); } // 全排列 private static void f(int k) { // 全排列终点 if (k == a.length) { // 处理该种排列下所有的乘法可能 for (int i = 1; i < a.length; i++) { int x1 = a2i(0, i); int x2 = a2i(i, a.length); // 如果乘积也包含了九个数字,ans++ if (check(x1 * x2)) { ans++; // 这里没有考虑x1和x2交换顺序的情况,所以最后输出时要除以2 } } } // 全排列 for (int i = k; i < a.length; i++) { int t = a[i]; a[i] = a[k]; a[k] = t; f(k + 1); t = a[i]; a[i] = a[k]; a[k] = t; } } // 判断x是否是一个包含九个数字的数 private static boolean check(int x) { String s = x + ""; if (s.length() != 9 || s.indexOf('0') > -1) { return false; } Set set = new HashSet(); for (int i = 0; i < s.length(); i++) { set.add(s.charAt(i)); } if (set.size() == 9) { return true; } return false; } // 将a数组[begin,end)转换为整数 private static int a2i(int begin, int end) { int res = a[begin]; for (int i = begin + 1; i < end; i++) { res *= 10; res += a[i]; } return res; } }