可以说是hin暴力了,代码有待优化,先放上来
import java.util.Scanner;
public class Main {
static int[] num;
static int n;
static int cnt;
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
n = in.nextInt();
cnt = 0;
for(int i = 1; i<n; i++){
num = new int[10];
int residue = n-i;
int s = i;
while(s!=0){
int tt = s%10;
s /= 10;
num[tt]++;
}
boolean flag = false;
if(num[0]>0) flag = true;
for(int j = 1; j<=9; j++)
if(num[j]>1) flag = true;
if(flag) continue;
check(residue);
}
System.out.println(cnt);
}
private static void check(int x) {
for(int i = 2; i<=9999; i++){
num = new int[10];
int s = n-x;
while(s!=0){
int tt = s%10;
s /= 10;
num[tt]++;
}
s = i;
while(s!=0){
int tt = s%10;
s /= 10;
num[tt]++;
}
boolean flag = false;
for(int j = 1; j<=9; j++)
if(num[j]>1) flag = true;
if(flag) continue;
int y = x*i;
s = y;
while(s!=0){
int tt = s%10;
s /= 10;
num[tt]++;
}
flag = false;
if(num[0]>0) flag = true;
for(int j = 1; j<=9; j++)
if(num[j] != 1)
flag = true;
if(flag) continue;
cnt++;
}
}
}