第十二届蓝桥杯省赛试题及其部分答案

这里给大家分享第十二届蓝桥杯B组的试题(c++,java,python基本完全一样)。

链接: https://pan.baidu.com/s/1pHQXtKblcuQjn0kZD9LLvg 提取码: vfbv

第一题:

小蓝准备用 256 M 的内存空间开一个数组,数组的每个元素都是 32 位二进制整数,如果不考虑程序占用的空间和维护内存需要的辅助空间,请问 256MB的空间可以存储多少个 32 位二进制整数?

答案:256 * 1024 * 1024 * 8 / 32 = 67108864
8位等于1字节

第二题:

小蓝有很多数字卡片,每张卡片上都是数字 0 到 9。小蓝准备用这些卡片来拼一些数,他想从 1 开始拼出正整数,每拼一个,就保存起来,卡片就不能用来拼其它数了。小蓝想知道自己能从 1 拼到多少。例如,当小蓝有 3 张卡片,其中0 到 9 各 3 张,则小蓝可以拼出 1 到 10,但是拼 11 时卡片 1 已经只有一张了,不够拼出 11。现在小蓝手里有 0 到 9 的卡片各 2021张,共 20210 张,请问小蓝可以从 1 拼到多少?提示:建议使用计算机编程解决问题。

答案: 3181

#include <bits/stdc++.h>
using namespace std;
int a[10];
int main()
{
    for(int i = 0;i<10;i++) a[i] = 2021;
    int k,n,ans = -1;
    for(int i = 1;i<= 100000;i++){
        k = i;
        while(k){
            int w = k%10;
            a[w]--;
            k/= 10;
            if(a[w] == -1){
              ans = i;
              break;
            }
        }
        if(ans != -1) break;
    }
    printf("%d",ans-1);
    return 0;
}

第五题:

小蓝学习了最短路径之后特别高兴,他定义了一个特别的图,希望找到图中的最短路径。小蓝的图由 2021 个结点组成,依次编号 1 至 2021。对于两个不同的结点 a,b,如果 a 和b 的差的绝对值大于 21 ,则两个结点之间没有边相连;如果 a 和 b 的差的绝对值小于等于 21,则两个点之间有一条长度为 a 和 b 的最小公倍数的无向边相连。例如:结点 1 和结点 23 之间没有边相连;结点 3 和结点 24 之间有一条无向边,长度为 24;结点 15 和结点 25 之间有一条无向边,长度为 75 。请计算,结点 1 和结点 2021 之间的最短路径长度是多少。

使用最短路算法 dijk或者优化了的floyd很快就出来了
答案:10266837

#include <bits/stdc++.h>
using namespace std;
const long long inf = 0x7fffffff;
long long mp[2031][2031];
int main()
{
    int i,j,k;
    for(i = 1;i<=2021;i++){
        for(j = i;j<=2021;j++){
          mp[i][j] = mp[j][i] = inf;
        }
    }

    for(i = 1;i<2022;i++){
        for(j = i;j<2022;j++){
            if((j-i) <= 21) mp[i][j] = mp[j][i] = (i*j)/__gcd(i,j);
        }
    }

    for(k = 1;k < 2022;k++)
    {
        for(i = 1;i < 2022;i++){
            for(j = i;j < 2022;j++){
               if(mp[i][k]+mp[k][j] < mp[i][j])
              mp[i][j] = mp[j][i] = mp[i][k]+mp[k][j];
            }
        }
    }

    printf("%lld",mp[2021][1]);
    return 0;
}




G题:

动态规划:

传送门

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值