標題: 數的分解(本題總分:10 分)
【問題描述】
把 2019 分解成 3 個各不相同的正整數之和,并且要求每個正整數都不包
含數字 2 和 4,一共有多少種不同的分解方法?
注意交換 3 個整數的順序被視為同一種方法,例如 1000+1001+18 和
1001+1000+18 被視為同一種。
【答案提交】
這是一道結果填空的題,你只需要算出結果后提交即可。本題的結果為一
個整數,在提交答案時只填寫這個整數,填寫多余的內容將無法得分。
解題思路:
循環出答案,要注意去重的問題,可以讓 3 個變量(假設為 a, b, c)從 1 開始枚舉,即暴力,這樣的出來的結果肯定會有重復,重復原因就是 a 可能和 b、c 重合,同樣,b 也可能和 a、c 出現重合,c 也可能和 a、b 重合。即需要把結果除以 6 。
另一種就是控制循環是a,b,c的值,讓a從a開始,b=a+1,c=b+1開始,這樣abc三個值也就不會有重復。這也是下面代碼的方法
代碼:
#include<stdio.h>int reso(int i=0)
{ int s=0;int a[4];for(i=0;i<4;i++){if(a[i]==2||a[i]==4)s=0;elses=a[1]*1000+a[2]*100+a[3]*10+a[4]; } return s;
}
main()
{ int count=0;int a,b,c;for(a=1;a<2019;a++){if(reso(a)!=0)continue;for(b=a+1;b<2019;b++){if(reso(b)!=0)continue;for(c=b+1;c<2019;c++){if(reso(c)!=0)count=count+1;}}}printf("%d",count);
}