目录
A:空间
题目描述
小蓝准备用 256MB 的内存空间开一个数组,数组的每个元素都是 32 位二进制整数,如果不考虑程序占用的空间和维护内存需要的辅助空间,请问 256MB 的空间可以存储多少个 32 位二进制整数?
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
题目解析
256MB=256*2^10KB=256*2^20B=256*8*2^20b,故256MB可以存储256*8*2^20/32=2^26个32位二进制整数。
答案
67108864
B:卡片
题目描述
小蓝有很多数字卡片,每张卡片上都是数字 0到 9。
小蓝准备用这些卡片来拼一些数,他想从 1 开始拼出正整数,每拼一个,就保存起来,卡片就不能用来拼其它数了。
小蓝想知道自己能从 1 拼到多少。
例如,当小蓝有 30 张卡片,其中 0 到 9 各 3 张,则小蓝可以拼出 1 到 10,
但是拼 11 时卡片 1 已经只有一张了,不够拼出 11。
现在小蓝手里有 0 到 9 的卡片各 2021 张,共 20210 张,请问小蓝可以从 1 拼到多少?
提示:建议使用计算机编程解决问题。
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
题目解析
我直接使用暴力进行解决,通过for循环开始累加每个数字使用的次数,如果某个数字出现了2021次,则结束循环,输出上一次循环的结果,对于俩位数以上的数字需要一个while循环来判断,进行边整除边取余,直到n为0退出while循环,继续进行下一轮for循环。
代码如下
#include<stdio.h>
int main() {
int n, i, sum, x;
int count0=0, count1=0,count2=0,count3=0,count4=0,count5=0,count6=0,count7=0,count8=0,count9=0;
for(i=0; ; i++) {
n=i;
if(count0==2021||count1==2021||count2==2021||count3==2021||count4==2021||count5==