标题:神奇算式 由4个不同的数字,组成的一个乘法算式,它们的乘积仍然由这4个数字组成。 比如: 210 x 6 = 1260 8 x 473 = 3784 27 x 81 = 2187 都符合要求。 如果满足乘法交换律的算式算作同一种情况,那么,包含上边已列出的3种情况,一共有多少种满足要求的算式。import java.util.Arrays; public class 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) return 0; vis[x%10]++; x=x/10; } while(x!=0); return 1; } //k与j的每一位数字都不允许重复,而且必须是i中已经出现了的数字 static int check2(int x,int y){ do{ if(vis[x%10]==0) return 0; //保证相同的数字只出现一次,为对y的判断做铺垫 vis[x%10]--; x=x/10; }while(x!=0); do{ if(vis[y%10]==0) return 0; vis[y%10]--; y=y/10; }while(y!=0); return 1; } }
蓝桥杯 预赛试题 神奇算式 java实现
最新推荐文章于 2022-03-05 18:31:34 发布