其他分享
首页 > 其他分享> > 【蓝桥杯历年题】2020蓝桥杯A组省赛第三场

【蓝桥杯历年题】2020蓝桥杯A组省赛第三场

作者:互联网

文章目录

试题 A: 数青蛙(模拟)

在这里插入图片描述

>答案:353

个位数一位;11~19以及10的倍数两位;其余情况三位

#include <iostream>

using namespace std;

int get(int x) 
{
    if(x >= 1 && x <= 10) return 1;
    else if((x >= 11 && x <= 20) || x == 30 || x == 40 || x == 50 || x == 60 || x == 70 || x == 80 ) return 2;
    else return 3;
}

int main()
{
    int res = 0;
    res += 10 * 20;
    
    for(int i = 1;i <= 20;i ++ ) res += get(i); // 第一个数字
    for(int i = 1;i <= 20;i ++ ) res += get(i); // 第二个数字
    for(int i = 2;i <= 40;i += 2 ) res += get(i); // 第一个数字
    for(int i = 4;i <= 80;i += 4 ) res += get(i); // 第一个数字
    
    cout << res << endl;
    
    return 0;
}

试题 B: 互质(最大公约数)

在这里插入图片描述

>答案:1008

#include <iostream>

using namespace std;

int gcd(int a,int b)
{
    return b ? gcd(b,a % b) : a;
}

int main()
{
    int res = 0;
    for(int i = 1;i <= 2020;i ++ ) 
        if(gcd(i,1018) == 1) res ++;
    
    cout << res << endl;
    
    return 0;
}

试题 C: 车牌(爆搜)

在这里插入图片描述

>答案:4002750

#include <iostream>

using namespace std;

int res;

void dfs(int u,int l1,int l2) // u表示搜到第几位,
    // 从0开始,l1表示上一位是多少,l2表示上2位是多少
{
    if(u == 6) {
        res ++;
        return;
    }
    
    if(u < 3)
    {
        for(int i = 0;i <= 15;i ++ ){
            if(i == l1 && i == l2 && l1 == l2) continue;
            dfs(u + 1,i,l1);
        }
    }else{
        for(int i = 0;i <= 9;i ++ ){
            if(i == l1 && i == l2 && l1 == l2) continue;
            dfs(u + 1,i,l1);
        }
    }
}

int main()
{
    dfs(0,-1,-1);
    
    cout << res << endl;
    
    return 0;
}

试题 D: Fibonacci 集合(多路归并)

在这里插入图片描述

>答案:41269

类似题 – 62. 丑数

#include <iostream>
#include <vector>

using namespace std;

vector<long long> q;

int main()
{
    q.push_back(1);
    q.push_back(2);
    q.push_back(3);

    int i =0,j = 0,k = 0;
    while(q.size() < 2020)
    {
        long long t = min(3 * q[i] + 2,min(5 * q[j] + 3,8 * q[k] + 5));
        q.push_back(t);
        
        if(3 * q[i] + 2 == t) i ++ ;
        if(5 * q[j] + 3 == t) j ++ ;
        if(8 * q[k] + 5 == t) k ++ ;
    }
    cout << q.back() << endl;
    
    return 0;
}

试题 E: 上升子串

在这里插入图片描述在这里插入图片描述

标签:试题,int,res,蓝桥,2020,&&,l1,l2,第三场
来源: https://blog.csdn.net/weixin_43154149/article/details/115617722