0
点赞
收藏
分享

微信扫一扫

蓝桥杯B组——数的分解

爱我中华8898 2022-02-21 阅读 54

题目描述

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

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

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

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 128M

首先需要排除这三个数带2或者带4,然后暴力搜索符合三者相加等于2019的三个数,因为三个数全排列有六种方案,排除重复的,所以需要除以6

  • #include<iostream>
    using namespace std;
    
    bool f(int x){
        while(x){
            if(x>10){
                int temp=x%10;
                x/=10;
                if(temp==2||temp==4){
                    return true;
                }
            }else{
                if(x==2||x==4){
                    return true;
                }
                return false;
            }
        }
    
    
    
    int main(){
        int a=2019;
        int cnt=0;
        for(int i=1;i<2019;i++){
            for(int j=1;j<2019;j++){
                for(int k=1;k<2019;k++){
                    if(i+j+k==a&&f(i)==0&&f(j)==0&&f(k)==0){
                        cnt++;
                    }
                }
            }
        }
        cout<<cnt/6;
        return 0;
    }
    

举报

相关推荐

0 条评论