/*凑算式
B DEF
A+ --- + ------- = 10
C GHI
这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。
比如:
6+8/3+952/714 就是一种解法,
5+3/1+972/486 是另一种解法。
这个算式一共有多少种解法?29*/
//1-9不同数字,则立马全排列
//全排列加check
//注意一点是有一个测试用例不能整除,check条件中要加通分之后能整除,
public class Main {
static int ans=0;
public static void main(String[] args) {
int arr[]= {1,2,3,4,5,6,7,8,9};
f(arr,0);
System.out.println(ans);
}
private static void f(int[] arr, int k) {
if(k==9) {
if(check(arr))
ans++;
}
for(int i=k;i<9;i++) {
{
int t=arr[i];
arr[i]=arr[k];
arr[k]=t;
}
f(arr,k+1);
{
int t=arr[i];
arr[i]=arr[k];
arr[k]=t;
}
}
}
private static boolean check(int[] arr) {
int x=arr[3]*100+arr[4]*10+arr[5];
int y=arr[6]*100+arr[7]*10+arr[8];
//通分之后能整除并且最后相加之和等于10
if((arr[1]*y+arr[2]*x)%(y*arr[2])==0&&arr[0]+(arr[1]*y+arr[2]*x)/(y*arr[2])==10)
return true;
return false;
}
}