2020蓝桥杯省赛B组C++(第二场)真题

心得体会

前面总结了很多历届的省赛真题,这次终于轮到自己上战场上体验真题啦~为此次蓝桥杯省赛也是准备了一两周时间,听说比较水,题不是很难,会暴力就能拿奖哈哈哈考完确实有点这样的感觉,但是能把五个填空题万无一失的做全对也不是一件简单的事情。先说说自己吧,一周后成绩出来还算满意,在辽宁省排名靠前(省一,拿到国赛资格啦),填空题只做对了前三道…其实挺气的,刚考完看答案心态没了,第四个填空题算到10月1日,我不小心算到考试当天10月17日了hhh第五题我是暴力数的,少算了两种情况,可能是大题写得还行,初略看了下前三个大题基本满分,第四个…能力有限,第五个暴力写了一半,估计能得到一些分。其实总体感觉也一般吧,并没有达到自己的预期发挥。不多想了,好好放宽心态,准备一下11月14日国赛!
准备了啥?
很多人都说蓝桥杯…暴力杯,嗯嗯没错大概就是这样,啊哈哈哈其实就花了几天时间准备准备就考了,有点别的事情在忙。也就是做了近五年的真题,总结了一下算法和经常考到的题型等等。想要写的轻松些当然用算法实现肯定是更好了。
总结需要掌握的基础算法:排序、散列、递归、贪心、二分、双指针、数学问题还有C++ STL标准模板库等等
进阶的数据结构:栈、队列、链表、深度优先搜索(DFS)、广度优先搜索(BFS)、树、图、并查集还有动态规划等等

历届近五年蓝桥杯B组省赛真题

试题A 门牌制作(5分)

【问题描述】

小蓝要为一条街的住户制作门牌号。
这条街一共有 2020 位住户,门牌号从 1 到 2020 编号。
小蓝制作门牌的方法是先制作 0 到 9 这几个数字字符,最后根据需要将字
符粘贴到门牌上,例如门牌 1017 需要依次粘贴字符 1、 0、 1、 7,即需要 1 个
字符 0, 2 个字符 1, 1 个字符 7。
请问要制作所有的 1 到 2020 号门牌,总共需要多少个字符 2?

【答案提交】

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

答案:624

试题B 既约分数(5分)

【问题描述】

如果一个分数的分子和分母的最大公约数是1,这个分数称为既约分数。例如,3/4 , 5/2 , 1/8 , 7/1都是既约分数。请问,有多少个既约分数,分子和分母都是1 到2020 之间的整数(包括1和2020)?

【答案提交】

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

答案:2481215

试题C 蛇形填数(10分)

【问题描述】

如下图所示,小明用从1 开始的正整数“蛇形”填充无限大的矩阵。
2020蓝桥杯省赛B组C++(第二场)真题_第1张图片
容易看出矩阵第二行第二列中的数是5。请你计算矩阵中第20 行第20 列的数是多少?

【答案提交】

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一
个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

答案:761
#include 
int a[100][100];
int cnt=1;
int main()
{
   
	int i;
	int x,y;
    for(i = 1 ; i <= 40; i++)
	{
   
        if(i % 2==1 )
		{
   
			
            for(x = i, y = 1; x >= 1 && y <= i; x--, y++)
                a[x][y] = cnt++;
        }
        else
		{
   
            for(int x = 1, y = i; x <= i && y >= 1; x++, y--)
                a[x][y] = cnt++;
        }
    }
    printf("%d\n", a[20][20]);
	return 0;
}

试题D 跑步锻炼(10分)

【问题描述】

小蓝每天都锻炼身体。
正常情况下,小蓝每天跑 1 千米。如果某天是周一或者月初(1 日),为了
激励自己,小蓝要跑 2 千米。如果同时是周一或月初,小蓝也是跑 2 千米。
小蓝跑步已经坚持了很长时间,从 2000 年 1 月 1 日周六(含)到 2020 年
10 月 1 日周四(含)。请问这段时间小蓝总共跑步多少千米?

【答案提交】

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一
个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

答案:8879

试题E 七段码(15分)

【问题描述】

小蓝要用七段码数码管来表示一种特殊的文字。
2020蓝桥杯省赛B组C++(第二场)真题_第2张图片
七段码上图给出了七段码数码管的一个图示,数码管中一共有7 段可以发光的二极管,分别标记为a, b, c, d, e, f, g。小蓝要选择一部分二极管(至少要有一个)发光来表达字符。在设计字符的表达时,要求所有发光的二极管是连成一片的。
例如:b 发光,其他二极管不发光可以用来表达一种字符。
例如:c 发光,其他二极管不发光可以用来表达一种字符。这种方案与上一行的方案可以用来表示不同的字符,尽管看上去比较相似。
例如:a, b, c, d, e 发光,f, g 不发光可以用来表达一种字符。
例如:b, f 发光,其他二极管不发光则不能用来表达一种字符,因为发光的二极管没有连成一片。
请问,小蓝可以用七段码数码管表达多少种不同的字符?

####【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一
个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

答案:80

//a-0,b-1,c-2,d-3,e-4,f-5,g-6
#include
#include
#include
using namespace std;
int ve[7][7];
bool visit[7];
int ans=0;
set<set<int> > se;
void dfs(int x,set<int> s)
{
   
	if(!se.count(s))
	{
   
		se.insert(s);
		ans++;
	}
	if(s.size()==7)
	return ;
	for(int j=0;j<7;j++)
	{
   
		if(visit[j]||!ve[x][j])
		continue;
		s.insert(j);
		visit[j]=1;
		dfs(j,s);
		visit[j]=0;
		s.erase(j);
	}
}
void add(int x,int y)
{
   
	ve[x][y]=1;
	ve[y][x]=1;
}
int main()
{
   
	//a的所有边
	add(0,1);
	add(0,5);
	//b的所有边
	add(1,6);
	add(1,2);
	//c的所有边
	add(2,6); 
	add(2,3);
	//d的所有边
	add(3,4);
	//e的所有边
	add(4,5);
	add(4,6);
	//f的所有边
	add(5,6);
	set<int> s;
	for(int i=0;i<=6;i++)

你可能感兴趣的:(蓝桥杯,算法)