第十一屆軟件類校內模擬賽——CC++程序設計-填空題

總結一下今天上午的模擬賽

1.約數

問題描述
  1200000有多少個約數(只計算正約數)。

#include<iostream>
using namespace std;
int main()
{
	int n=0,cnt=0;
	cin >> n;
	for(int i=1;i<=n;i++)
		if(n%i==0)
			cnt++;
	cout << cnt;
	return 0;
} 

2.計算機存儲

問題描述
  在計算機存儲中,15.125GB是多少MB?

#include<iostream>
using namespace std;
int main()
{
	int i=15.125;
	cout << 1024 *15.125;
	return 0;
}

3.葉子節點

問題描述
  一棵包含有2019個結點的二叉樹,最多包含多少個葉結點?

根據滿二叉樹性質,可以得出:
當數的深度爲1時,數的節點數爲21-1=1,葉子節點數爲20=1
當數的深度爲2時,數的節點數爲22-1=3,葉子節點數爲21=2
當數的深度爲3時,數的節點數爲23-1=7,葉子節點數爲22=4
當數的深度爲4時,數的節點數爲24-1=15,葉子節點數爲23=8
依此類推,當數的深度爲11時,數的節點數爲211-1=2047,葉子節點數爲210=1024
與本題中樹的節點相差2047-2019=28個節點。
而除葉子節點外,每一層上的所有結點都有兩個子結點,所以28個葉子節點被砍掉後,被砍掉結點的父節點成爲了新的葉子節點,所以葉子節點數爲1024-28+14=1010

4.包含“9”的數字

問題描述
  在1至2019中,有多少個數的數位中包含數字9?
  注意,有的數中的數位中包含多個9,這個數只算一次。例如,1999這個數包含數字9,在計算只是算一個數。

#include<iostream>
using namespace std;
int main()
{
	int n,cnt=0;
	cin >> n;
	for(int i=1;i<=9;i++)//一位數
		if(i%9==0)
		{
			cnt++;
			continue;
		}		
	for(int i=10;i<=99;i++)//兩位數
	{
		if(i/10==9)
		{
			cnt++;
			continue;
		}
		if(i%10==9)
		{
			cnt++;
			continue;
		}
	}
	for(int i=100;i<=999;i++)//三位數
	{
		if(i/100==9)
		{
			cnt++;
			continue;
		}
		if((i/10)%10==9)
		{
			cnt++;
			continue;
		}
		if(i%100%10==9)
		{
			cnt++;
			continue;
		}
	}
	for(int i=1000;i<=n;i++)//四位數
	{
		if((i/100)%10==9)
		{
			cnt++;
			continue;
		}
		if((i/10)%100%10==9)
		{
			cnt++;
			continue;
		}
		if(i%10==9)
		{
			cnt++;
			continue;
		}
	}
	cout << cnt;
	return 0;
} 

程序設計題總結稍後發佈

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章