第十二届蓝桥杯省赛详解

试题A:空间

1B是8位,32位二进制数占用4B空间,1MB=2^10KB=2^20B

那么可以存放32位二进制数的个数为256*2^20*8/32=67108864

试题B:卡片

分析:因为数据只有2021,所以直接模拟即可

结果为:3181(注意题目中问的是能够完整的拼到多少)

细节见代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<map>
#include<queue>
#include<vector>
#include<cmath>
using namespace std;
const int N=1e5+10;
int cnt[15];
int main()
{
	for(int i=0;i<=9;i++)
		cnt[i]=2021;
	bool flag=true;//标记当前是否存在卡片不够的情况 
	int i; 
	for(i=1;;i++)//尝试拼i 
	{
		int t=i;//定义一个临时变量t,防止i被修改
		while(t)
		{
			int r=t%10;
			t/=10;
			if(cnt[r]==0)
			{
				flag=false;
				break;
			}
			cnt[r]--;
		} 
		if(!flag) break;
	}
	printf("%d",i-1);//最多拼到i-1 
	return 0;
}

试题C:直线

答案是40257

这道题目细节比较多,讲解见链接:

试题D:货物摆放

答案:2430

详情见博客:

答案是:10266837

详情见博客:

试题F:时间显示

样例1输入:

46800999

样例1输出:

13:00:00

样例2输入:

1618708103123

样例2输出:

01:08:23

分析:这道题没什么好说的,需要注意的就是单位之间的换算,1s等于1000ms,还有就是注意格式输出,细节见代码:

#include<cstdio>
#include<iostream>
#include<cstring>
#include<vector>
#include<algorithm>
#include<map>
#include<cmath>
#include<queue>
using namespace std;
int main()
{
    long long t;
    cin>>t;
    t/=1000;
    printf("%02d:%02d:%02d",t/3600%24,(t%3600)/60,t%60);
    return 0;
}

试题G:砝码称重

样例输入:

3
1 4 6

样例输出:

10

详情见博客:

试题H:杨辉三角形

样例输入:

6

样例输出:

13

详情见博客:

试题I:双向排序

样例输入:

3 3
0 3
1 2
0 2

样例输出:

3 1 2

详情参考博客:

试题J:括号序列

样例输入:

((()

样例输出:

5

详情参考博客:

经验分享 程序员 微信小程序 职场和发展