藍橋杯第五屆真題:神奇算式

點擊查看:藍橋杯歷年真題 題解目錄

神奇算式

在這裏插入圖片描述

答案: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;
    }
}

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章