前言
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;
}