[蓝桥杯]java实现数的分解

[蓝桥杯]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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值