其他分享
首页 > 其他分享> > 第十二届蓝桥杯填空题

第十二届蓝桥杯填空题

作者:互联网

 

空间

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

思路分析:

先将MB转换为字节Byte,也就是Byte(B),1MB = 1024KB, 1KB = 1024B,1B = 8bit(位)所以256 MB = 256 * 1024 * 1024B,32位二进制整数也即32bit = 32 / 8 = 4B,所以可以存在 256 * 1024 * 1024 / 4,使用程序计算出结果为:67108864

if __name__ == '__main__':
    print(256 * 1024 * 1024 // 4)

卡片

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

思路分析:

分析题目可以知道模拟整个过程即可,我们可以使用一个循环,只要可以拼出当前的数字i那么循环继续,否则break输出i - 1(本来是送分题在比赛的时候不知道啥情况模拟这个过程还是算错了),使用一个方法check来检查当前数字i是否可以拼出即可,使用check方法来检查会比较保险,我可能在一开始的时候没有使用方法来检查导致所有代码写在一起错了。

cards = [2021] * 10


# 检查当前的数字n是否是拼出来
def check(n: int):
    while n:
        t = n % 10
        if cards[t] - 1 < 0: return False
        cards[t] -= 1
        n //= 10
    return True


if __name__ == '__main__':
    i = 1
    while True:
        if check(i):
            i += 1
        else:
            print(i - 1)
            break

 

标签:__,1024,卡片,第十二届,32,填空题,拼出,蓝桥,256
来源: https://blog.csdn.net/qq_39445165/article/details/116373318