2020蓝桥杯C++B组省赛第二场个人感受和个人题解_蓝桥杯b组省二难不难

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

代码

待更新
思路:暴力循环查找2的个数

二、试题B: 既约分数

【答案】

答案: 2481215

本题总分:5 分

【问题描述】

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

【答案提交】

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

代码

待更新
思路:暴力双重for循环查找__gcd(i,j) == 1的个数(可能有坑?但感觉是直接1-2020循环没有特例)

三、试题C 蛇形填数s

【答案】

答案:761
本题总分:10 分

【问题描述】

如下图所示,小明用从1 开始的正整数“蛇形”填充无限大的矩阵。
在这里插入图片描述

容易看出矩阵第二行第二列中的数是5。请你计算矩阵中第20 行第20 列的数是多少?

【答案提交】

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

代码

待更新
1.暴力Excel解题,随手拉一拉,答案瞬间出来
2.数组填数即可
cnt = 1;
num[1][1] = cnt++;
int x = 0,y = 2;
while(退出条件){
	x++;
	while(y>0){
		num[x++][y--] = cnt++;
	}
	y++;
	while(x>0){
		num[x--][y++] = cnt++;
	}
}
即可

四、试题D 跑步锻炼

【答案】

答案:8879

在这里插入图片描述

代码

待更新
注意时间是包含关系,通过正常日期增加去判断即可;初始是周六,最后是周日,这里可以代码验证,好像也有excel大佬破解的;

五、试题E: 七段码

【答案】

答案:80

本题总分:10 分

【问题描述】

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

【答案提交】

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传在这里插入图片描述

abc
fgc
eed

代码:

待更新
把相邻的看成一个二维数组(如上,个别考虑cc和ee两个),dfs枚举01情况即可,注意0000000不行。

六、试题F 成绩分析

在这里插入图片描述

【思路】
待更新
思路:暴力暴力,破解就是了

七、试题G 回文日期

在这里插入图片描述

【思路】
待更新
上面有个日期的了,这次也是按照day++。依次去判断,判断很好写的,就不说了,暴力就是了;

八、试题 H:字串分值

在这里插入图片描述

【样例输入】
ababc

【样例输出】
21

【样例说明】

子串f值:

a     1
ab    2
aba   1
abab  0
ababc 1
 b    1
 ba   2
 bab  1
 babc 2
  a   1
  ab  2
  abc 3
   b  1
   bc 2
    c 1

【评测用例规模与约定】

对于20% 的评测用例,1 ≤ n ≤ 10;
对于40% 的评测用例,1 ≤ n ≤ 100;
对于50% 的评测用例,1 ≤ n ≤ 1000;
对于60% 的评测用例,1 ≤ n ≤ 10000;
对于所有评测用例,1 ≤ n ≤ 100000。

【思路】
待更新
第八题忘记了0.0;
思路,这题案结果要倒着看就很简单
先定义一个填充数据的int numcnt[100000][27];
前面100000对应第几个数,后面1-26个对应填充的字母,numcnt[i][0] 0位计数,a对应1,b对应2;
cin >> str;
reverse(str.begin(),str.end());
for(i = 0; i < str.length(); i++){
	for(j = 0; j <= i; j++){
		if(numcnt[i][str[i]-'a'+1] == 0){   //str[i]-'a'+1就把abc转换123
			numcnt[i][0]++;
		}
		numcnt[i][str[i]-'a'+1]++;  //标记有了
		ans += numcnt[i][str[i]-'a'+1];  //每次加入ans即可
	}
}
cout << ans;


九、试题 I: 平面切分

题目忘了,没找到

【思路】
本题关键是推出  
1.切分平面和  几条线~几个交点的关系
2.在去找输入的线段有几个交点
对于一:首先找到i条线最多切分几个平面,最多几个点;
	   dpArea[i] = i + dpArea[i-1]
	   dpPoint[i] = i - 1 + dpPoint[i-1]
	   然后发现规律如果交点没达到最多交点,有 
	   【分割平面 = i条线对应最大分割平面 - (i条线最大交点 - 线段i)】
	   这时候发现很多都能对应,但如果都交与一个点就不合适了
	   但不着急,判断线段的时候是两层for循环依次输入和前面的判断是否平行的。
	   每次i 对应 j循环就判断如果同一个交点就算一个一个,此时所有情况满足
对于二:for(int i = 0; i < n; i++){
			输入线段
			for(int j = 0; j < i; j++){
				//每条线段和前面已经输入的判断是否平行(A1 == A2)
				如果平行
					不敢啥
				如果重合
					当作初始线段减少1,并且后面的线段不和它进行判断
				如果相交{
					如果交点在j的循环内例遍过
						交点不变
					否则
						交点++,标记该交点
				}
			}
		}
	   
	   

十、试题 J 冒泡排序

在这里插入图片描述

【样例输入】
4
1

【样例输出】
bbaa
1

【评测用例规模与约定】

漏掉了没保存上
大概是:
对于30% 的评测用例,1 ≤ n ≤ 20;
对于50% 的评测用例,1 ≤ n ≤ 100;
对于100% 的评测用例,1 ≤ n ≤ 10000;

【思路】
待更新
搜索暴力破解可以拿到30% —— 7.5分qwq;
垃圾破电脑换机器浪费我2-30分钟,结果提交时间12:58就截止,老师之前允诺的延时也只是真的安慰。。
这波学校破电脑背大锅。心态都蹦了,被电脑ex到考完都没啥心情吃饭了。
这次真无语了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值