蓝桥杯:把2019分解成3个各不相同的正整数之和,并且要求每个正整数都不包含数字2和4,一共有多少种不同的分解方法?

蓝桥杯例题:
问题:把2019分解成3个各不相同的正整数之和,并且要求每个正整数都不包含数字2和4,一共有多少种不同的分解方法?
注意:交换3个整数的顺序被视为同一种方法,例如 1000+1001+18和1001+1000+18被视为同一种。

思路:三层暴力循环,因为不重复,判断第一次循环不超过总数的一半,而且后面的每一次循环开始的数都比前面的大,然后写一个方法判断数里是否包含2和4,如果包含就重新开始新的循环。如果都不包含就判断三个数是否相加起来为2019。
代码如下:

public class NumAdd {
    public static void main(String[] args) {
        int n=2019;
        int count=0;
        //三层暴力循环,想要三个数都不重复,让后面每一个数都比前一个数大
        for (int i = 1; i < (int)n / 2; i++) {
            if(judge(i))
                continue;
            for(int j=i+1;j<n;j++){
                if(judge(j))
                    continue;
                for(int k=j+1;k<n;k++){
                    if(judge(k))
                        continue;
                    if(i+j+k==2019){
                        count++;
                    }
                }
            }
        }
        System.out.println(count);

    }
    //判断数是否包含2或者4
    public static boolean judge(int n){
        boolean flag=false;
        int x=n;
        while (x!=0){
            int i=x%10;
            if(i==2||i==4){
                flag=true;
                break;
            }
            x=x/10;
        }
        return flag;
    }
}

版权声明:本文为qq_45468597原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。