把 20192019 分解成 33 个各不相同的正整数之和,并且要求每个正整数都不包含数字 22 和 44,一共有多少种不同的分解方法?
注意交换 33 个整数的顺序被视为同一种方法,例如 1000+1001+181000+1001+18 和 1001+1000+181001+1000+18 被视为同一种。
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
//个数
int sum = 0;
//要保证前面比后面一个数小,0不能包括
for (int i = 1; i < 2019/2; i++) {
for (int j = i+1; j < 2019; j++) {
int k = 2019-i-j;
//要保证不重复,不交换顺序,那么后面的要大于前面的
if ((i<j) && (j<k) ) {
//判断是否出现2和4
if (isF(i) && isF(j) && isF(k) ) {
sum++;
}
}
}
}
System.out.println(sum);
}
//判断是不是2和4的方法
public static boolean isF(int n) {
int x = n;
while (true) {
if (x%10==2 || x%10==4) {
return false;
}
if (x < 10) {
return true;
}
x = x/10;
}
}
}