第十三届蓝桥杯国赛大学B组填空题(c++)

 A.2022

动态规划 AC;

#include<iostream>
#define int long long
using namespace std;
int dp[2050][15];
//dp[i][j]:把数字i分解为j个不同的数的方法数
signed main(){
    dp[0][0]=1;
    for(int i=1;i<=2022;i++){
        for(int j=1;j<=10;j++){
            //一种是已经分成j个数,这时只需每一个数+1就可以得到
            //另一种是已经分成j-1个数,这时只需添加一个大小为j的数就可以得到
            //注意数组越界
            if(i-j>=0) dp[i][j]=dp[i-j][j]+dp[i-j][j-1];
        }
    }
    cout<<dp[2022][10]<<endl;
    //cout<<379187662194355221<<endl;
    return 0;
}

B.钟表 

模拟 AC: 

#include<iostream>
#define int long long
using namespace std;
const double exp=1e-6;
int s,f,m;
signed main(){
    for(s=0;s<=6;s++){
        for(f=0;f<60;f++){
            for(m=0;m<60;m++){
                if(s==0&&f==0&&m==0) continue;
                double ss=30.0*s+f/2.0+m/120.0;
                double ff=6.0*f+m/10.0;
                double mm=6.0*m;
                double A=abs(ss-ff);A=min(A,360.0-A);
                double B=abs(ff-mm);B=min(B,360.0-B);
                if(abs(A-2*B)<=exp) cout<<s<<" "<<f<<" "<<m<<endl;
            }
        }
    }
    return 0;
}

补:出差

手动模拟 AC:

/*
4个人选2个(共6种情况)
1 2 ×
1 3 √
1 4 √
2 3 ×
2 4 √
3 4 ×
*/
#include<iostream>
using namespace std;
int main(){
    cout<<"A C"<<endl;
    cout<<"A D"<<endl;
    cout<<"B D"<<endl;
    return 0;
}

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>