• 猜算式


    看下面的算式:

    □□ x □□ = □□ x □□□

    它表示:两个两位数相乘等于一个两位数乘以一个三位数。

    如果没有限定条件,这样的例子很多。

    但目前的限定是:这9个方块,表示1~9的9个数字,不包含0。
    该算式中1至9的每个数字出现且只出现一次!

    比如:
    46 x 79 = 23 x 158
    54 x 69 = 27 x 138
    54 x 93 = 27 x 186
    .....

    请编程,输出所有可能的情况!

    import java.util.ArrayList;
    
    import java.util.List;
    
    
    
    public class ChessNum {
    	static List<Integer> list;
    
    	static int one,two,three,four;
    	static int a,b,c,d,e,f,g,h,z;
    
    
    	public static void main(String[] args) {
    		list = new ArrayList<Integer>();
    		
    		getList();
    		for (int i = 1; i <= 9; i++) {
    
    			a = list.get(i);
    			list.set(i, 0);
    			for (int j = 1; j <= 9; j++) {
    
    				if (list.get(j) != 0) {
    					b = list.get(j);
    					list.set(j, 0);
    					for (int k = 1; k <= 9; k++) {
    
    						if (list.get(k) != 0) {
    							c = list.get(k);
    							list.set(k, 0);
    							for (int l = 1; l <= 9; l++) {
    
    								if (list.get(l) != 0) {
    									d = list.get(l);
    									list.set(l, 0);
    									for (int m = 1; m <= 9; m++) {
    
    										if (list.get(m) != 0) {
    											e = list.get(m);
    											list.set(m, 0);
    											for (int n = 1; n <= 9; n++) {
    
    												if (list.get(n) != 0) {
    													f = list.get(n);
    													list.set(n, 0);
    													for (int o = 1; o <= 9; o++) {
    
    														if (list.get(o) != 0) {
    															g = list.get(o);
    															list.set(o, 0);
    															for (int p = 1; p <= 9; p++) {
    
    																if (list.get(p) != 0) {
    																	h = list.get(p);
    																	list.set(p,
    																			0);
    																	for (int q = 1; q <= 9; q++) {
    
    																		if (list.get(q) != 0) {
    																			z = list.get(q);
    																			list.set(
    																					q,
    																					0);
    																			if(builtOne(a, b)*builtTwo(c,d)==builtThree(e, f)*builtFour(g, h, z))
    																			{
    																
    																			System.out.println(builtOne(a, b)+"x"+builtTwo(c,d)+"="+builtThree(e, f)+"x"+builtFour(g, h, z));
    																			}
    																		}
    																		
    																	}
    																	addList(list);
    																	list.set(i,0);
    																	list.set(j,0);
    																	list.set(k,0);
    																	list.set(l,0);
    																	list.set(m,0);
    																	list.set(n,0);
    																	list.set(0,0);
    																	}
    
    															}
    															addList(list);
    															list.set(i,0);
    															list.set(j,0);
    															list.set(k,0);
    															list.set(l,0);
    															list.set(m,0);
    															list.set(n,0);
    															}
    
    													}
    													addList(list);
    													list.set(i,0);
    													list.set(j,0);
    													list.set(k,0);
    													list.set(l,0);
    													list.set(m,0);
    													}
    
    											}
    
    											addList(list);
    											list.set(i,0);
    											list.set(j,0);
    											list.set(k,0);
    											list.set(l,0);
    											}
    
    									}
    
    									addList(list);
    									list.set(i,0);
    									list.set(j,0);
    									list.set(k,0);
    									}
    
    							}
    
    							addList(list);
    							list.set(i,0);
    							list.set(j,0);
    							}
    
    					}
    				
    				
    					addList(list);
    					list.set(i,0);
    					}
    
    			}
    
    			addList(list);
    		}
    
    	}
    	public static void addList(List<Integer> list)
    	{
    		for (int r = 1; r <= 9; r++) {
    			list.set(r, r);
    
    		}
    	}
    	private static void getList() {
    		for(int i=0;i<=9;i++)
    		{
    			list.add(i,i);
    	
    		}
    		
    	}
    	public static int builtOne(int a,int b)
    	{
    		return a*10+b;
    	}
    	public static int builtTwo(int a,int b)
    	{
    		return a*10+b;
    	}
    	public static int builtThree(int a,int b)
    	{
    		return a*10+b;
    	}
    	public static int builtFour(int a,int b,int c)
    	{
    		return a*100+b*10+c;
    	}
    	
    
    }
    
    

    结果:存在重复,这个暴力运算实在是让人头晕
    46x79=23x158
    54x69=27x138
    54x93=27x186
    56x73=14x292
    58x67=29x134
    58x69=23x174
    58x73=29x146
    58x96=32x174
    63x74=18x259
    64x79=32x158
    67x58=29x134
    69x54=27x138
    69x58=23x174
    73x56=14x292
    73x58=29x146
    73x96=12x584
    74x63=18x259
    76x98=14x532
    79x46=23x158
    79x64=32x158
    79x84=12x553
    84x79=12x553
    93x54=27x186
    96x58=32x174
    96x73=12x584
    98x76=14x532

  • 相关阅读:
    linux seqlock 锁
    linux 位操作
    linux 原子变量
    linux 读者/写者自旋锁
    linux自旋锁函数
    linux 自旋锁 API 简介
    linux Completions 机制
    linux 读者/写者旗标
    linux 在 scull 中使用旗标
    Linux 旗标实现
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3024642.html
Copyright © 2020-2023  润新知