题目:
把 2019 分解成 3 个各不相同的正整数之和,并且要求每个正整数都不包 含数字 2 和 4,一共有多少种不同的分解方法?注意交换 3 个整数的顺序被视为同一种方法,例如 1000+1001+18 和 1001+1000+18 被视为同一种。
思路:
其实就是将2019这个数分成三个不同整数,但要注意1000+1001+18 和 1001+1000+18 被视为同一种,而且分解的整数中不能包括2和4这两个数字。
代码:
public class Main {
public static void main(String[] args) {
int n=2019;
int sum=0;
for (int i = 1; i < n; i++) { //分解的第一个数
for (int j = i+1; j <n&&n-i-j>j ; j++) { //分解的第二个数
int t=n-i-j; //分解的第三个数
if (!four(i)&&!four(j)&&!four(t)){ //判断分解的整数中是否含有2或4
sum++;
}
}
}
System.out.println(sum);
}
public static boolean four(int n){ //创建一个判断分解的整数中是否含有2或4的方法
while (n>0){
int m=n%10;
if (m==2||m==4){
return true;
}
n/=10;
}
return false;
}
}