Java && C++ 实现第十二届蓝桥杯 C++ B组 A空间B卡片

187 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第1天,点击查看活动详情

虽然是C++组的,但是和Java组的差不了两道题,大家都可以看一看 如有错误,还请佬 评论或私信指出(写的稍些急) 再也不肝博客了 /(ㄒoㄒ)/~~

(由于上传图片有限制,如果描述不清楚点击手写题解) 手写题解字丑,但是小编感觉会比文字看的直观一些(其实是不会用数学公式)

编程题测试数据

手写题解(如果访问出错,请刷新访问的页面即可(Nebo的问题))

当前页面的编程题均在C语言网成功运行 C语言网有各届蓝桥杯的题库 第十二届蓝桥杯编程题测试 刷题集

在这里插入图片描述

试题 A: 空间

本题总分:5 分

【问题描述】

小蓝准备用 256MB 的内存空间开一个数组,数组的每个元素都是 32 位

二进制整数,如果不考虑程序占用的空间和维护内存需要的辅助空间,请问

256MB 的空间可以存储多少个 32 位二进制整数?

【答案提交】

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一

个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

package LanqiaobeiExam._12CB;

/**
 * ClassName: A空间
 * Package: LanqiaobeiExam._12CB
 *
 * @DATE: 2022/3/21 15:01
 * Author: asleep
 */
public class A空间 {  //1B = 8bit(位)    32位 = 4B  1MB = 1024KB = 1024 * 1024B
    public static void main(String[] args) {    //67108864
        System.out.println(256 * 1024 * 1024 / 4);
    }
}

试题 B: 卡片

本题总分:5 分

【问题描述】

小蓝有很多数字卡片,每张卡片上都是数字 0 到 9。

小蓝准备用这些卡片来拼一些数,他想从 1 开始拼出正整数,每拼一个,

就保存起来,卡片就不能用来拼其它数了。

小蓝想知道自己能从 1 拼到多少。

例如,当小蓝有 30 张卡片,其中 0 到 9 各 3 张,则小蓝可以拼出 1 到 10,

但是拼 11 时卡片 1 已经只有一张了,不够拼出 11。

现在小蓝手里有 0 到 9 的卡片各 2021 张,共 20210 张,请问小蓝可以从 1

拼到多少?

提示:建议使用计算机编程解决问题。

【答案提交】

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一

个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分

package LanqiaobeiExam._12CB;

/**
 * ClassName: B卡片
 * Package: LanqiaobeiExam._12CB
 *
 * @DATE: 2022/3/21 15:19
 * Author: asleep
 */
public class B卡片 {  //3181      从1开始循环数字,每个数字循环每一位,对应数字卡片 -1,减到 0 表示当前数字不能拼成
    public static void main(String[] args) {
        int[] count = new int[10];
        for (int i = 0; i < 10; i++) {
            count[i] = 2021;
        }
        int index = 0;
        A:
        while (true) {
            int temp = ++index;
            while (temp != 0) {
                if (count[temp % 10] > 0) {
                    count[temp % 10]--;
                } else {
                    System.out.println(index - 1);
                    break A;
                }
                temp /= 10;
            }
        }

    }
}