第十一届蓝桥杯大赛软件类省赛 C/C++ 大学 B 组 试题+题解

文章目录

  • 试题 A. 门牌制作
  • 试题 B:既约分数
  • 试题 C. 蛇形填数
  • 试题 D: 跑步锻炼
  • 试题 E: 七段码
  • 试题 F:成绩统计
  • 试题 G: 回文日期
  • 试题 H: 子串分值和
  • 试题 I: 平面切分
  • 试题 J: 字串排序

试题 A. 门牌制作

题目描述:计算1-2020中出现了多少次2,注意不是多少个数字出现2。
题解:直接写,送分题
C++ 代码:

试题 B:既约分数

题目描述:求多少个分数使得分子和分母的最大公约数为1,且同时分子和分母均在1-2020之间。
题解: 数论 gcd,补充算法:在algorithm包下有一个函数 牛啊,以后再也不傻傻的去写gcd函数了,啦啦啦啦
这里也写一下gcd函数,毕竟比较经典的辗转相减法

C++ 代码:

试题 C. 蛇形填数

题目描述
如下图所示,小明用从 1 开始的正整数“蛇形”填充无限大的矩阵。
1 2 6 7 15 :::
3 5 8 14 :::
4 9 13 :::
10 12 :::
11 :::
:::
容易看出矩阵第二行第二列中的数是 5。请你计算矩阵中第 20 行第 20 列的数是多少 br> 题解: 这题我看大家都是去模拟题目的意思,打印出蛇形矩阵,其实不然,他问的是第20行第20列的数是多少,观察对角线上元素,有一定的规律可循:(前4个对角线上的元素如下) 可以看出

找到如下的规律就可直接很快的解决问题了:
C++ 代码:

但是本着精益求精的态度,我们给出模拟蛇形填数的代码
C++ 代码:

试题 D: 跑步锻炼

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

题解: 我们打比赛最喜欢的大模拟题,谁知道那个抽风的出题人
C++代码:

#include #include  #include  using namespace std;int mouths[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; bool isleap(int yr){	return yr % 4 == 0 && yr % 100 != 0 || yr % 400 == 0; }int main(){	int res = 0, sum = 0;	int week = 5;	for(int y = 2000;y  2020; y ++ )	{		if(isleap(y)) mouths[2] = 29;		else mouths[2] = 28;		for(int i = 1; i  12; i ++ )		{			for(int j = 1;j  mouths[i]; j ++ )			{				if((j == 1 && week == 0) || j == 1 || week == 0) res ++;				week ++;				week %= 7;				sum ++;			}		}	}	mouths[2] = 29;	for(int i = 1; i  9; i ++ )	{		for(int j =1 ; j  mouths[i]; j 来源:1bu3dong
                                                        

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年3月11日
下一篇 2021年3月11日

相关推荐