蓝桥杯例题:
问题:把2019分解成3个各不相同的正整数之和,并且要求每个正整数都不包含数字2和4,一共有多少种不同的分解方法?
注意:交换3个整数的顺序被视为同一种方法,例如 1000+1001+18和1001+1000+18被视为同一种。
思路:三层暴力循环,因为不重复,判断第一次循环不超过总数的一半,而且后面的每一次循环开始的数都比前面的大,然后写一个方法判断数里是否包含2和4,如果包含就重新开始新的循环。如果都不包含就判断三个数是否相加起来为2019。
代码如下:
public class NumAdd {
public static void main(String[] args) {
int n=2019;
int count=0;
//三层暴力循环,想要三个数都不重复,让后面每一个数都比前一个数大
for (int i = 1; i < (int)n / 2; i++) {
if(judge(i))
continue;
for(int j=i+1;j<n;j++){
if(judge(j))
continue;
for(int k=j+1;k<n;k++){
if(judge(k))
continue;
if(i+j+k==2019){
count++;
}
}
}
}
System.out.println(count);
}
//判断数是否包含2或者4
public static boolean judge(int n){
boolean flag=false;
int x=n;
while (x!=0){
int i=x%10;
if(i==2||i==4){
flag=true;
break;
}
x=x/10;
}
return flag;
}
}
版权声明:本文为qq_45468597原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。