GitHub

数的分解1567(2019蓝桥杯省赛)

题目描述

把 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 }

 

posted @ 2019-06-22 20:23  繁华似锦觅安宁  阅读(781)  评论(0编辑  收藏  举报