一.题目描述
把 2019 分解成 3 个各不相同的正整数之和,并且要求每个正整数都不包含数字 2 和 4,一共有多少种不同的分解方法?
注意交换 3 个整数的顺序被视为同一种方法,例如 1000+1001+18 和 1001+1000+18 被视为同一种。
二.思路分析
人为规定三个数的大小是i<=j<=k
三.代码
public class test1 {
public static void main(String[] args){
int result = 0;
int num = 2019;
for(int i=1;i<=2019;i++){
for(int j=i+1;j<=num&&num-i-j>j;j++){//人为规定i<=j<=k
int k = num-j-i;
if(!check(i)&&!check(j)&&!check(k)){//必须三个数都满足不包含2和4才可以使结果加一
result++;
}
}
}
System.out.println(result);
}
public static boolean check(int n){
while(n>0){
int t=n%10;//先用一个数存最后一位数【也就是余数】
if(t==2||t==4){//如果有2或4其中任意一个
return true;
}
n=n/10;//除去刚刚判断过的最后一位数,再进行判断
}
return false;
}
}