首页 分享 蓝桥杯样题

蓝桥杯样题

来源:花匠小妙招 时间:2024-08-08 17:00

#include <bits/stdc++.h>

using namespace std;

typedef unsigned long long ll;

const ll N=21;

const int NB=24; 

vector<int> add(vector<int> a, vector<int> b){

    vector<int> res(NB);

    int carr=0;

    for(int i=0;i<NB;i++){

        res[i]=a[i]+b[i]+carr;

        carr=0;

        if(res[i]>=10){

            carr=res[i]/10;

            res[i]=res[i]%10;

        }

    }

    return res;

}

vector<int> div10(vector<int> a){

    vector<int> res(NB);

    for(int i=NB-1;i>0;i--){

        res[i-1]=a[i];

    }

    return res;

}

int rem10(vector<int> a){

    return a[0];

}

vector<int>  multi(vector<int>  a, int c){

    vector<int>  res(NB);

    int carr=0;

    for(int i=0;i<NB;i++){

        res[i]=a[i]*c+carr;

        carr=0;

        if(res[i]>=10){

            carr=res[i]/10;

            res[i]=res[i]%10;

        }

    }

    return res;

}            

bool greatthanzero(vector<int> a){

    for(int i=0;i<NB;i++){

        if(a[i]>0){

            return true;

        }

    }    

    return false;

}    

int a[10]; // save digit 次数

vector< vector<int> >  c(10, vector<int> (NB)); //save 0-9 N次方

void check_print(vector<int> ps){

    int dig[10];

    memset(dig,0,sizeof(dig));

    bool leadingzero=true;

    for(int i=ps.size()-1;i>=0;i--){

        if(ps[i]>0){

            leadingzero=false;

        }

        if(!leadingzero){

            dig[ps[i]]++;

        }    

    }

    bool match=true;

    for(int i=0;i<10;i++){

        if(dig[i]!=a[i]){

            match=false;

            break;

        }

    }

    if(match){

        bool leadingzero=true;

        for(int i=ps.size()-1;i>=0;i--){

            if(ps[i]>0){

                leadingzero=false;

            }

            if(!leadingzero){

                cout<<ps[i];

            }    

        }

        cout<<endl;

    }    

}  

void printa(vector<int> a){

    for(int i=a.size()-1;i>=0;i--){

        cout<<a[i];

    }

    cout<<endl;

}    

void dfs(int i, int n, vector<int> ps){

    if(i==9||n==0){//枚举最后一个数

        ps=add(ps,multi(c[i],n));

        a[i]=n;

        check_print(ps);

        return;                

    }    

    for(int j=0;j<=n;j++){

        if(i==0&&j==n){//首位不为0

            continue;

        }

        a[i]=j;

        //cout<<i<<" "<<j<<" "<<nbb<<" "<<bmax<<" "<<ncb<<" "<<cmax<<endl;

        dfs(i+1,n-j,add(ps,multi(c[i],j)));

    }

}    

int main()

{

    c[1][0]=1;

    for(int i=2;i<=9;i++){

        vector<int> sj(NB);

        sj[0]=1;

        for(int j=1;j<=N;j++){

            sj=multi(sj,i);

        }

        c[i]=sj;

        printa(c[i]);

    }

    cout<<endl;

    vector<int> zero(NB);

    dfs(0,N,zero);

    return 0;

}

相关知识

花卉养殖爱好者经常给花盆松土,这样做的目的是()
(2013•日照模拟)百合花不但是客厅里面的装饰花卉,而且球茎含丰富淀粉,可作为蔬菜食用.如图编号①~⑤是显微镜下拍到的二倍体百合(2n=24)的减数分裂不同时期的图象.请分析回
适合新手种植的6种多肉,随便一养出状态,轻松上色美极了
情人节未至广州鲜花“赶集” 天寒雨多花价飙升
花农绝不外传的8个养花绝招
基于Pytorch的花卉识别
3000种月季花竞相开放
冰灯玉露的养殖方法和注意事项
【实用】花农绝不外传的8个养花绝招,99%的人都不知道!
什么花最美

网址: 蓝桥杯样题 https://www.huajiangbk.com/newsview546.html

所属分类:花卉
上一篇: 湖南江永:封山育林,瑶乡万亩野生
下一篇: 插花剪花艺剪刀专用插花鲜花修花剪

推荐分享