import java.util.Scanner;
public class Main{
static int[] arr=new int[10];
static boolean[] hasVisited=new boolean[10];
static int count=0;
static int N;
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
N=scanner.nextInt();
dfs(1, 10, N);
System.out.println(count);
scanner.close();
}
public static void dfs(int start,int n,int num) {
if(start==n)//9个数字已经全部用完,开始调用getCount函数判断是否是带分数并获得count
getCount(n, num);
else {
for(int i=1;i<n;i++) {
if(hasVisited[i])
continue;
else {
arr[start]=i;
hasVisited[i]=true;
dfs(start+1, n, num);
hasVisited[i]=false;
}
}
}
}
public static void getCount(int n,int num) {
int length=1,temp=num;
String s=temp+"";
length=s.length();
for(int k=1;k<length+1;k++) {
int num1=sum(0,k);
if(num1>=num)
return;
for(int j=k+(n-k)/2;j<n-1;j++) {
int num2=sum(k, j);
int num3=sum(j, n-1);
if(num2>=num3 && num2%num3==0 && num==num1+num2/num3) {
count++;
}
}
}
}
public static int sum(int start,int end) {
int sum=0;
for(int i=start;i<end;i++) {
sum=sum*10+arr[i+1];
}
return sum;
}
}
带分数:dfs 搜索
最新推荐文章于 2022-10-11 22:11:17 发布