[蓝桥杯]java实现数的分解
题目:
把 2019 分解成 3 个各不相同的正整数之和,并且要求每个正整数都不包含数字 2 和 4,一共有多少种不同的分解方法?
注意交换 3 个整数的顺序被视为同一种方法,例如 1000+1001+18 和1001+1000+18 被视为同一种。
//本题抛去条件只是一道遍历三个数求和得到2019的情况总和
//本题重点即是实现题目所要求的两个个条件:
//1.每个正整数都不包含2和4
//2.仅顺序不一样的三个数视为同一种
public class sdfj {
public static boolean test(int a) {//用于判断一个数中是否含有某个数字,若有则返回true
while(a!=0) {
if(a%10==2||a%10==4) {
return true;
}
else
a/=10;
}
return false;
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
int count=0;
for(int a=1;a<=2019;a++) {
if( test(a))
continue;
for(int b=a+1;b<=2019;b++) {//b=a+1,c=b+1目的在于保证abc呈递增式,而不会出现倒序但数字一样的情况
if( test(b))
continue;
for(int c=b+1;c<=2019;c++) {
if( test(c))
continue;
if(a+b+c==2019) {
count++;
}
}
}
}
System.out.println(count);
}
}
//答案:40785