把 x 分解成 3 个各不相同的正整数之和,并且要求每个正整数都不包 含数字 2 和 4,一共有多少种不同的分解方法? 注意交换 3 个整数的顺序被视为同一种方法,例如当分解 2019 时,1000 + 1001 + 18 和 1001 + 1000 + 18 被视为同一种。
有多组测试数据,每组测试数据占一行。
每行输入一个整数 x (0 < x < 10000)。
对于每组输入,输出一行答案。
5
0
1 #include<iostream> 2 using namespace std; 3 int deside(int n){ 4 int a,b,c,d; 5 a=n%10; 6 n=n/10; 7 b=n%10; 8 n=n/10; 9 c=n%10; 10 n=n/10; 11 d=n%10; 12 if(a==2||a==4||b==2||b==4||c==2||c==4||d==2||d==4){ 13 return 1; 14 } 15 else{ 16 return 0; 17 } 18 } 19 int main(){ 20 int m,i,j,k; 21 while(cin>>m){ 22 int num=0,p; 23 int choice[m*2]; 24 for(i=1;i<m-1;i++){ 25 if(deside(i)){ 26 continue; 27 } 28 for(j=i+1;j<m;j++){ 29 int nm=0; 30 if(deside(j)){ 31 continue; 32 } 33 k=m-i-j; 34 if(k<=0){ 35 continue; 36 } 37 if(deside(k)){ 38 continue; 39 } 40 if(i==k||j==k){ 41 continue; 42 } 43 num++; 44 } 45 } 46 num=num/3; 47 cout<<num<<endl; 48 } 49 return 0; 50 }
原文:https://www.cnblogs.com/zq-dmhy/p/11070213.html