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 阅读



