蓝桥杯第五届真题:神奇算式

点击查看:蓝桥杯历年真题 题解目录

神奇算式

蓝桥杯第五届真题:神奇算式_第1张图片

答案:12
package java_2014_A;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class Main003_神奇算式 {

    public static void main(String[] args) {
        int ans=0;
        for(int i=1;i<1000;i++)
            for(int j=1;j<1000;j++)
                if(check1(i, j))
                    for(int k=1000;k<=9999;k++)
                    	// 利用 i<=j  去重(交换律)
                        if(i*j==k && i<=j && check2(i,j,k)) {
                            ans++;
                            System.out.println(i+" * "+j+" = "+k);
                        }
        System.out.println(ans);
    }
    private static boolean check1(int i, int j) {
        String a1= ""+i+j;
        if(a1.length()!=4) return false;
        Set<Character> set = new HashSet<Character>();
        for(int t=0;t<4;t++)
            set.add(a1.charAt(t));
        if(set.size()!=4) return false;
        return true;
    }

    private static boolean check2(int i, int j, int k) {
        String a1= ""+i+j,a2=""+k;
        char[]c1=a1.toCharArray();Arrays.sort(c1);
        String s1=""+c1[0]+c1[1]+c1[2]+c1[3];
        char[]c2=a2.toCharArray();Arrays.sort(c2);
        String s2=""+c2[0]+c2[1]+c2[2]+c2[3];
        if(s1.equals(s2)) return true;
        return false;
    }
}

蓝桥杯第五届真题:神奇算式_第2张图片

你可能感兴趣的:(蓝桥杯历届真题)