1. 程式人生 > 實用技巧 >第十屆藍橋杯軟體類省賽 Java 大學 B 組 題目 第四題

第十屆藍橋杯軟體類省賽 Java 大學 B 組 題目 第四題

D.數的分解

題目描述:

把 2019 分解成 3 個各不相同的正整數之和,並且要求每個正整數都不包 含數字 2 和 4,一共有多少種不同的分解方法? 注意交換 3 個整數的順序被視為同一種方法,例如 1000+1001+18 和 1001+1000+18 被視為同一種。
【答案提交】
這是一道結果填空的題,你只需要算出結果後提交即可。本題的結果為一 個整數,在提交答案時只填寫這個整數,填寫多餘的內容將無法得分。

    • (1).第一想到的是三重迴圈,在每一重裡面都進行一個判斷(是否包含數字2和4),最後一重判斷相加是否等於2019;
    • (2).題目中提到各不相同,排列組合公式共六種(ABC,ACB,BAC,BCA,CAB,CBA),同時交換順序視為一種,所以最後有也就剩ABC這一種排列方式,令j=i+1,k=j+1,可減少次數;
    • public class Main {
      
          public static boolean fenjie(int a)
          {
              while(a>0)
              {
                  if(a%10==2||a%10==4) {
                      return true;
                  }a/=10;
      
              }
              return false;
          }
      
          public static void main(String[] args) {
              // TODO Auto-generated method stub
      int ans=0; for(int i=1;i<2019;i++) { if(fenjie(i)) continue; for(int j=i+1;j<2019;j++) { if(fenjie(j)) continue; for(int k=j+1;k<2019;k++) {
      if(fenjie(k)) continue; if(i+j+k==2019) { ans++; } } } } System.out.println(ans);//40785 } }