首页 > 编程知识 正文

数的分解蓝桥杯C语言,合数个数蓝桥杯

时间:2023-05-05 06:50:39 阅读:273143 作者:3554

问题描述:

        把2019分解成3个各不相同的正整数之和,并且要求每个正整数都不包含数字2和4,一共有多少种不同的分解方法?

        注意交换3个整数的顺序被视为同一种方法,例如1000+1001+18和1001+1000+18被视为同一种。

样例输出:

40785

思路:这是一道填空题,你只要计算出结果即可。用暴力的方法做,不用考虑时间,要注意一个数分成三个数,根据排列组合知有六种排序方式,所以结果要除以6.

代码:

#include<iostream>#include<cstdio>#include<cstring>using namespace std;bool check(int x,int y,int z)//判断是否有2/4{ int res=0; while(x) { res=x%10; if(res==2||res==4) return false; x=x/10; } while(y) { res=y%10; if(res==2||res==4) return false; y=y/10; } while(z) { res=z%10; if(res==2||res==4) return false; z=z/10; } return true;}int main(){ int ans=0; int n; cin>>n; for(int i=1; i<n; i++) { for(int j=1; j<n; j++) { if(i==j) continue; for(int k=1; k<n; k++) { if(i==k||j==k) continue; if(i+j+k==n&&check(i,j,k)) ans++; } } } cout<<ans/6<<endl;//分解的三个数有六种排序算一种情况,结果/6; return 0;}

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。