第十一屆藍橋杯大賽 全程記錄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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章