问题描述:
把2019分解成3个各不相同的正整数之和,并且要求每个正整数都不包含数字2和4,一共有多少种不同的分解方法?
注意交换3个整数的顺序被视为同一种方法,例如1000+1001+18和1001+1000+18被视为同一种。
题目分析:
题目要求为正整数,且三个数各不相同,因此可以取i、j、k范围1~1999,用for循环嵌套,共能得出1999*1999*1999种情况。在所有情况中挑选不含有“2”和“4”的,用result来计数。由于三个数排列组合共有六种情况,所以最终结果为result/6。
结果:
40785
代码:
public class Main {
static int result = 0;
static boolean ble;
public static void main(String args[]) {
for(int i=1;i<2000;i++){//用三个for循环遍历所有情况
ble = false;
if(check(i)){
continue;
}
for(int j=1;j<2000;j++){
ble = false;
if(check(j)||i==j){
continue;
}
for(int k=1;k<2000;k++){
ble = false;
if(check(k)||j==k||i==k){
continue;
}else{
int sum = i+j+k;
if(sum == 2019){
result += 1;
}
}
}
}
}
System.out.print(result/6);
}
private static boolean check(int m) {
if(m%10 ==2 || m%10 == 4){//判断数字中是否含有“2”或“4”
ble = true;
}else{
m = m/10;
if(m != 0){
check(m);}
}
return ble;
}
}