第十一届蓝桥杯大赛 全程记录01——2020.3.22校内模拟赛(上)

前言

2020.3.22,学校组织开展了“第十一届软件类校内模拟赛——C/C++程序设计”,考试时间:2020-03-22 13:30~17:30
本篇博客就是用来记录本次大赛的题目解读,做题思路,解题代码等等……
注:以下内容仅记录自己的做题思路,不代表标准答案!

1. 问题1

  • 问题描述

在计算机存储中,15.125GB是多少MB?

  • 答案提交

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

  • 分析:

这是一道关于计算机存储机制的基础题,只需要知道GB、MB之间的转换关系即可,1 GB=1024 MB .

  • 解答:

15488

2. 问题2

  • 问题描述

1200000有多少个约数(只计算正约数)。

  • 答案提交

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

  • 分析:
    这是一道很简单的遍历查找题,只需要写一个简单的小程序就能实现。

  • 解答:

#include <bits/stdc++.h>
using namespace std; 
/* 1200000有多少个约数(只计算正约数)。*/

int main()
{
    int a = 1200000;
    int ans = 0;

    for(int i = 1; i <= a; i++)
        if(a % i == 0)
            ans++;

    cout<<ans<<endl;
    return 0;
}

注:可能有些小伙伴还不知道<bits/stdc++.h>这个头文件是什么意思,这里简单介绍一下:

<bits/stdc++.h>是在编程竞赛中常用到的一个头文件,<bits/stdc++.h>几乎包含了全部的C++头文件,因此在写程序中只需要在顶部写这一个头文件,省去了很多繁琐的引用步骤。

3. 问题3

  • 问题描述

一棵包含有2019个结点的二叉树,最多包含多少个叶结点?

  • 答案提交

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

  • 分析:
    这是一道对于数据结构二叉树部分的基础题,我们需要知道二叉树的各个节点的关系:N=N0+N1+N2 ,其中N为总节点,Ni为度为i的结点;同时,还有一个关键联系:“N2=N0-1”,即度为2的节点总比叶子节点(即度为0的节点)少1个。
    因此,最多叶节点的情况为:N1=0, N=2N0-1(N2=N0-1)

  • 解答:

1010

4. 问题4

  • 问题描述

在1至2019中,有多少个数的数位中包含数字9?
  注意,有的数中的数位中包含多个9,这个数只算一次。例如,1999这个数包含数字9,在计算只是算一个数。

  • 答案提交

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

  • 分析:
    这也是一道比较基础的题目,只需要用一趟循环对每个数进行求余、取位操作即可。但是需要注意的是,有的数中的数位中包含多个9,这个数只算一次。 因此,在找到要求的数字后即计数并退出此趟循环。

  • 解答:

#include <bits/stdc++.h>
using namespace std;
/*	在1至2019中,有多少个数的数位中包含数字9?
	注意,有的数中的数位中包含多个9,这个数只算一次。
	例如,1999这个数包含数字9,在计算只是算一个数
*/ 

int main(int argc, char *argv[]) {
	int x,flag;
	int sum=0;
	for(int i=1;i<=2019;i++)
	{
		x=i;
		flag=0;
		while(x)
		{
			if(x%10==9)
			{
				flag=1;
				break;
			}
			x/=10;
		}
		if(flag)
			sum++;
	}
	cout<<sum<<endl;
	return 0;
}
发布了21 篇原创文章 · 获赞 53 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_41618424/article/details/105033944