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