返回题解分享
讨论 / 题解分享/ 帖子详情

数的分解(结果填空) - 题解

public class 数的分解 {
	    public static void main(String[] args) {
	        int n = 2019;
	        int count = cutcount(n);
	        System.out.println(count);
	    }

	    // 计算将整数n拆分成三个不同的正整数之和的方法数量
	    public static int cutcount(int n) {
	        int count = 0;
	        // 对于a的取值范围为1到n/3,因为三个数的和最小为n/3
	        for (int a = 1; a <= n / 3; a++) {
	            // 对于b的取值范围为a+1到(n-a)/2,因为b必须比a大且c必须比b大
	            for (int b = a + 1; b < n - a - b; b++) {
	                int c = n - a - b;
	                // 检查a、b、c是否都不包含数字2和4
	                if (!contains(a) && !contains(b) && !contains(c)) {
	                    count++;
	                }
	            }
	        }
	        return count;
	    }

	    // 检查一个整数是否包含数字2或4
	    public static boolean contains(int num) {
	        while (num > 0) {
	            int digit = num % 10;
	            if (digit == 2 || digit == 4) {
	                return true;
	            }
	            num /= 10;
	        }
	        return false;
	    }
	}
0 回复 0 转发 0 喜欢 6 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!