第十一届蓝桥杯国赛

Posted 中二病没有蛀牙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第十一届蓝桥杯国赛相关的知识,希望对你有一定的参考价值。

A


答案:563
代码:

#include <bits/stdc++.h>
using namespace  std;

int check(int x)

    while(x > 0)
        int a = x%10;
        if(a == 2) return 1;
        x /= 10;
    
    return 0;

int main()

    int ans = 0;
    for(int i = 1; i<= 2020;i++)
        if(check(i))
            ans++;
    
    cout<<ans<<endl;

B

C

答案:39001250856960000

思路:分解质因数,然后约数求和公式

#include <bits/stdc++.h>
using namespace  std;
#define  INF 0x3f3f3f3f
const int maxn = 10005;
typedef long long ll;

int p[maxn];
int main()

    for(int i = 2;i <= 100;i++)
        int n = i;
        for(int j = 2 ;j <= n / j;j++)
            while(n % j == 0)
                p[j]++;
                n /= j;
            
        
        if(n > 1)
            p[n]++;
    
    // cout<<sum<<endl;;
    ll ans = 1;
    // for(auto i :mp)
    //     cout<<prime[i]<<",";
    //     ans = ans * ll(prime[i]+1); 
    // 
    for(int i = 2; i <= 100; i++)
        if(p[i])
            ans *= (p[i] + 1);
            cout<<ans<<endl;
        
    cout<<ans<<endl;
    return 0;

D

E

答案:552

#include <bits/stdc++.h>
using namespace  std;
#define  INF 0x3f3f3f3f
const int maxn = 10005;
typedef long long ll;

int f[maxn][maxn];
int vis[maxn][maxn];
int ans = 0;

void dfs(int x,int y,int l)
    if(x < 0 || x >= 4 || y < 0 || y >= 4) return;
    if(vis[x][y]) 
        return;
    if(l == 16) 
        ans++;
        return ;
    
    vis[x][y] = 1;
    dfs(x + 1,y,l+1);
    dfs(x,y+1,l + 1);
    dfs(x - 1,y,l + 1);
    dfs(x,y - 1,l + 1);
    vis[x][y] = 0;

int main()

    for(int i = 0; i < 4; i++)
        for(int j = 0; j < 4; j++)
            dfs(i,j,1);
        
    cout<<ans<<endl;
    return 0;

G

最长上升子序列+路径输出

#include <bits/stdc++.h>
using namespace  std;
#define  INF 0x3f3f3f3f
const int maxn = 10005;
typedef long long ll;

set<string> st;
vector<string> a;
string vis[maxn];
int f[maxn];
int la[maxn];
stack<string> fans;
int main()

    string s,ss;
    cin>>s;
    ss= "";
    ss += s[0];
    for(int i = 1;i < s.length();i++)
        if( s[i] >= 'A' && s[i] <= 'Z')
            st.insert(ss);
            a.push_back(ss);
            ss = ""; 
        
        ss += s[i];
    
    st.insert(ss);
    a.push_back(ss);
    int n =st.size();
    // for(auto i : st)
    //     // vis[++n] = i;
    //     cout<<i<<endl;
    // 
     int ans = 0,k = 0;
    for(int i = 0;i < n; i++)
        f[i] = 1;
        for(int j = 0;j < i ;j++)
            if(a[j] < a[i])
                if(f[j] + 1> f[i])
                    // cout<<a[j] <<" "<<a[i]<<endl;
                    // cout<<a[i]<<endl;
                    la[i] = j;
                    f[i] = f[j] + 1;
                    if(ans < f[i])
                        ans = f[i];
                        k  =i;
                    
                
            
            // cout<<f[j]<<" ";

         
        // cout<<endl;
    
    // cout<<ans<<" "<<k<<endl;
    for (int i = 0;i < ans; ++i)
    
        fans.push(a[k]);
        k = la[k];
    
    while (!fans.empty())
    
        cout<<fans.top();
        fans.pop();
    
    cout<<endl;
    // cout<<ans[n-1]<<endl;
    return 0;

H

以上是关于第十一届蓝桥杯国赛的主要内容,如果未能解决你的问题,请参考以下文章

第十一届蓝桥杯国赛

第十一届蓝桥杯国赛

第十二届蓝桥杯国赛总结

2021软件类第十二届蓝桥杯国赛真题 Python组 A-E题解

第十二届蓝桥杯国赛总结

第十二届蓝桥杯国赛总结