由4个不同的数字,组成的一个乘法算式,它们的乘积仍然由这4个数字组成。
比如:
210 x 6=12608 x 473=378427 x 81=2187
都符合要求。
如果满足乘法交换律的算式算作同一种情况,那么,包含上边已列出的3种情况,一共有多少种满足要求的算式。
请填写该数字,通过浏览器提交答案,不要填写多余内容(例如:列出所有算式)。
import java.util.Arrays;publicclass Main{
static int vis[]= new int[10];
static int bk[]= new int[10];public static void main(String[] args){
int sum=0;for(int i=1023;i<=9876;i++){
Arrays.fill(vis,0);if(check(i)==0)continue;
bk= Arrays.copyOf(vis, vis.length);for(int j=1;j<=98;j++){
vis= Arrays.copyOf(bk, bk.length);if(i%j!=0)continue;
int k=i/j;if(j>k)continue;if(check2(k,j)==0)continue;
sum++;
System.out.println(j+"*"+k+"="+i);}}
System.out.println(sum);}//用于判断4个数字是否重复出现
static int check(int x){do{if(vis[x %10]!=0)return0;
vis[x%10]++;
x=x/10;}while(x!=0);return1;}//k与j的每一位数字都不允许重复,而且必须是i中已经出现了的数字
static int check2(int x,int y){do{if(vis[x%10]==0)return0;//保证相同的数字只出现一次,为对y的判断做铺垫
vis[x%10]--;
x=x/10;}while(x!=0);do{if(vis[y%10]==0)return0;
vis[y%10]--;
y=y/10;}while(y!=0);return1;}}