蓝桥杯 2021年省赛真题 (C/C++ 大学C组 )
解析移步对应 Java组 的题解。
#A ASC
本题总分: 5 5 5 分
问题描述
已知大写字母 A A A 的 A S C I I \mathrm{ASCII} ASCII 码为 65 65 65,请问大写字母 L L L 的 A S C I I \mathrm{ASCII} ASCII 码是多少?
答案提交
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
76
calcCode:
#include <stdio.h>
int main() {
// printf("%d", 65 + 'L' - 'A');
printf("%d", 'L');
}
#B 空间
本题总分: 5 5 5 分
问题描述
小蓝准备用 256 M B 256\mathrm{MB} 256MB 的内存空间开一个数组,数组的每个元素都是 32 32 32 位二进制整数,如果不考虑程序占用的空间和维护内存需要的辅助空间,请问 256 M B 256\mathrm{MB} 256MB 的空间可以存储多少个 32 32 32 位二进制整数?
答案提交
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
67108864
calcCode:
#include <stdio.h>
int main() {
printf("%d", 256 >> 2 << 20);
}
checkCode:
#include <stdio.h>
#include <math.h>
int A[67108864];
int main() {
printf("%f", sizeof A / pow(2, 20));
}
虽然 sizeof
是在编译阶段进行的,
从这个意义上看并不是什么非要支持不可的函数。
但 C \mathrm{C} C,行!
#C 卡片
本题总分: 10 10 10 分
问题描述
小蓝有很多数字卡片,每张卡片上都是数字 0 0 0 到 9 9 9。
小蓝准备用这些卡片来拼一些数,他想从 1 1 1 开始拼出正整数,每拼一个,就保存起来,卡片就不能用来拼其它数了。
小蓝想知道自己能从 1 1 1 拼到多少。
例如,当小蓝有 30 30 30 张卡片,其中 0 0 0 到 9 9 9 各 3 3 3 张,则小蓝可以拼出 1 1 1 到 10 10 10,但是拼 11 11 11 时卡片 1 1 1 已经只有一张了,不够拼出 11 11 11。
现在小蓝手里有 0 0 0 到 9 9 9 的卡片各 2021 2021 2021 张,共 20210 20210 20210 张,请问小蓝可以从 1 1 1 拼到多少?
提示:建议使用计算机编程解决问题。
答案提交
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
3181
calcCode:
#include <stdio.h>
int n, ans, cnt;
int main() {
while (1) {
n = ans;
while (n) {
if (n % 10 == 1) cnt++;
n /= 10;
}
if (cnt < 2021) ans++;
else break;
}
printf("%d", ans);
}
#D 相乘
本题总分: 10 10 10 分
问题描述
小蓝发现,他将 1 1 1 至 1000000007 1000000007 1000000007 之间的不同的数与 2021 2021 2021 相乘后再求除以 1000000007 1000000007 1000000007 的余数,会得到不同的数。
小蓝想知道,能不能在 1 1 1 至 1000000007 1000000007 1000000<