111 調查局特考三等 電子科學組 計算機概論 考古題詳解

111 年・調查局特考・三等・電子科學組
試題代碼 計算機概論

第 一 題20 分

當一系統存在一安全序列(safe sequence)時才處於安全狀態;若一個系統中有四個程序(process)分別為 P0P_0、P1P_1、P2P_2 及 P3P_3,與五個可被分配資源 AA、BB、CC、DD 及 EE,下表包含目前資源分配狀況(已分配資源與可用資源)與最大資源需求。為保證系統處於安全狀態(safe state),表中 xx 之最小值應為多少?

程序已分配資源 A B C D EA\ B\ C\ D\ E最大資源需求 A B C D EA\ B\ C\ D\ E
P0P_01 0 2 1 11\ 0\ 2\ 1\ 12 1 2 1 12\ 1\ 2\ 1\ 1
P1P_12 0 1 1 02\ 0\ 1\ 1\ 02 2 2 1 02\ 2\ 2\ 1\ 0
P2P_21 1 0 1 01\ 1\ 0\ 1\ 02 1 3 1 02\ 1\ 3\ 1\ 0
P3P_31 1 0 1 01\ 1\ 0\ 1\ 01 1 2 2 11\ 1\ 2\ 2\ 1

可用資源為 A B C D E=0 0 x 1 2A\ B\ C\ D\ E=0\ 0\ x\ 1\ 2。

🖼️ 本題原卷含圖表。基於試題來源之版權考量,本站不轉載原卷影像; 題目文字已完整轉錄,圖表請自行參閱考選部公告之試題原檔。

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考銀行家演算法的安全性判定。每個程序的尚需資源量為:

Need=最大資源需求−已分配資源\text{Need}=\text{最大資源需求}-\text{已分配資源}

若某程序的 Need 每一項都不大於目前可用資源,就能假設該程序完成,並將它已分配的資源歸還。若所有程序都能依序完成,這個順序就是安全序列,系統處於安全狀態。

解題方法

先計算各程序的尚需資源量:

程序尚需資源 Need(A、B、C、D、E)
P0P_0(1,1,0,0,0)(1,1,0,0,0)
P1P_1(0,2,1,0,0)(0,2,1,0,0)
P2P_2(1,0,3,0,0)(1,0,3,0,0)
P3P_3(0,0,2,1,1)(0,0,2,1,1)

可用資源為 (0,0,x,1,2)(0,0,x,1,2)。一開始 A=B=0A=B=0,因此 P0P_0、P2P_2 都因需要 A=1A=1 而無法執行,P1P_1 因需要 B=2B=2 而無法執行。P3P_3 要求 C=2C=2、D=1D=1、E=1E=1,所以必須有 x≥2x\ge 2 才能先完成。

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 二 題20 分

IP 位址 140.123.0.0140.123.0.0 之地址屬於 B 類地址,若要切割成 10 個子網,且全部都要連上電腦網路,請問所有子網路掩碼(subnet mask)應設為多少?

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題旨在測驗 IPv4 分類定址法(Classful Addressing)與子網路劃分(Subnetting)的運算能力,核心概念如下:

  1. IPv4 類別預設遮罩:
  • 類別 B(Class B)位址之首碼範圍為 128.0.0.0∼191.255.255.255128.0.0.0 \sim 191.255.255.255。
  • 預設網路 ID 為前 16 位元,主機 ID 為後 16 位元,預設子網路遮罩為 255.255.0.0(以 CIDR 表示為 /16)。
  1. 借位原則(Subnet Borrowing):
  • 子網路切割是透過向「主機位元(Host Bits)」借用 nn 個位元充當「子網路位元(Subnet Bits)」。
  • 可劃分的子網路數量公式:
  • 現行標準(RFC 1878 / CIDR,支援 Subnet Zero 與 All-Ones Subnet):可劃分子網路數為 2n2^n。
  • 早期標準(RFC 950,扣除全 0 與全 1 子網):可劃分子網路數為 2n−22^n - 2。
  1. 子網路遮罩合成:
  • 將所有網路位元與借用的子網路位元皆設為二進位 1,其餘主機位元設為二進位 0,再轉換為十進位點分標記法(Dotted-Decimal Notation)。

解題方法

步驟一:確認原始類別與位元配置

題目給定之 IP 位址為 140.123.0.0140.123.0.0,其第一個八位元組數值為 140140(落在 128∼191128 \sim 191 區間),屬於標準 Class B 位址。

  • 網路位元數:16 位元。
  • 主機位元數:16 位元。
  • 預設子網路遮罩:255.255.0.0。

步驟二:計算需借用的子網路位元數 nn

題目要求將網路切割成至少 10 個子網路,且全部都要能連上電腦網路:

  • 若依現行網際網路標準(RFC 1878 / CIDR): 2n≥102^n \ge 10 當 n=3n = 3 時,23=8<102^3 = 8 < 10(不足以提供 10 個子網)。 當 n=4n = 4 時,24=16≥102^4 = 16 \ge 10(滿足需求)。
  • 若依傳統 RFC 950 標準(排除全 0 與全 1 之子網): 2n−2≥10  ⟹  2n≥122^n - 2 \ge 10 \implies 2^n \ge 12 同樣可得 n≥4n \ge 4。
  • 因此,無論依循何種規範,皆必須向主機位元借用 4 個位元(n=4n = 4)。

步驟三:計算並推導子網路遮罩

向第三個八位元組借用高位的 4 個位元後,新的網路遮罩總長度為: 16+4=20 位元(即 /20)16 + 4 = 20 \text{ 位元(即 /20)}

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 三 題20 分

最大堆積(Max Heap)是一個完整二元樹(complete binary tree),將以下數列 12,15,13,2612,15,13,26 依序插入最大堆積中,其時間複雜度為何?

🖼️【此處有附圖,請對照原卷】

🖼️ 本題原卷含圖表。基於試題來源之版權考量,本站不轉載原卷影像; 題目文字已完整轉錄,圖表請自行參閱考選部公告之試題原檔。

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

最大堆積是一種完整二元樹,每個父節點的值都大於或等於子節點。插入新值時,先把它放在堆積最後一個位置,再與父節點比較;若新值較大,就向上交換,直到符合最大堆積性質。

含有 nn 個節點的完整二元樹高度為 O(log⁡n)O(\log n),因此單次插入最多向上調整 O(log⁡n)O(\log n) 層。

解題方法

依圖中的層序排列,原始最大堆積為 [10,8,3,5,2,1][10,8,3,5,2,1]。逐一插入題目數列,並在每次插入後向上調整:

  1. 插入 1212:先放在 33 的下一個位置,接著依序與 33、1010 交換,得到 [12,8,10,5,2,1,3][12,8,10,5,2,1,3]。
  2. 插入 1515:先放在 55 的下一個位置,接著依序與 55、88、1212 交換,得到 [15,12,10,8,2,1,3,5][15,12,10,8,2,1,3,5]。
  3. 插入 1313:先放在 88 的下一個位置,再與 88、1212 交換,得到 [15,13,10,12,2,1,3,5,8][15,13,10,12,2,1,3,5,8]。
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 四 題20 分

使用氣泡排序法(bubble sort)將陣列 array[7]={7,12,6,4,2,77,1}array[7]=\{7,12,6,4,2,77,1\} 由左至右排序成由小至大之陣列 array[7]={1,2,4,6,7,12,77}array[7]=\{1,2,4,6,7,12,77\},請問在排序過程中總共發生幾次陣列元素之交換?

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

  1. 氣泡排序法(Bubble Sort)原理: 氣泡排序法屬於交換排序(Exchange Sort)。在由小至大的排序過程中,演算法依序比較相鄰的兩個元素,若前項大於後項(即 array[j]>array[j+1]array[j] > array[j+1]),則將兩者互換(Swap)。每一回合(Pass)會將目前未排序區間中的最大值,如氣泡般逐步「浮」至該區間的最右端定位。
  2. 交換次數與逆序對(Inversion)的等價性: 在相鄰元素比較的排序法(如標準氣泡排序法)中,每一次相鄰元素的互換操作,恰好能且僅能消除原始序列中的一個逆序對(若 i<ji < j 且 array[i]>array[j]array[i] > array[j],則稱 (array[i],array[j])(array[i], array[j]) 為一個逆序對)。因此,無論比對順序如何實作,氣泡排序法過程中的總交換次數恆等於初始陣列的逆序對總數。

解題方法

給定陣列初始狀態為: array[7]={7,12,6,4,2,77,1}array[7] = \{7, 12, 6, 4, 2, 77, 1\} 陣列長度 n=7n = 7,元素索引為 0∼60 \sim 6。以下依標準氣泡排序法(由左向右掃描、相鄰比較)逐步追蹤每一回合(Pass)的交換過程:

【第一回合(Pass 1)】(浮出未排序區間最大值至索引 6)

  • 比較 array[0]=7array[0]=7 與 array[1]=12array[1]=12:7≤127 \le 12,不交換。
  • 比較 array[1]=12array[1]=12 與 array[2]=6array[2]=6:12>612 > 6,交換(第 1 次)→{7,6,12,4,2,77,1}\rightarrow \{7, 6, 12, 4, 2, 77, 1\}
  • 比較 array[2]=12array[2]=12 與 array[3]=4array[3]=4:12>412 > 4,交換(第 2 次)→{7,6,4,12,2,77,1}\rightarrow \{7, 6, 4, 12, 2, 77, 1\}
  • 比較 array[3]=12array[3]=12 與 array[4]=2array[4]=2:12>212 > 2,交換(第 3 次)→{7,6,4,2,12,77,1}\rightarrow \{7, 6, 4, 2, 12, 77, 1\}
  • 比較 array[4]=12array[4]=12 與 array[5]=77array[5]=77:12≤7712 \le 77,不交換。
  • 比較 array[5]=77array[5]=77 與 array[6]=1array[6]=1:77>177 > 1,交換(第 4 次)→{7,6,4,2,12,1,77}\rightarrow \{7, 6, 4, 2, 12, 1, 77\}
  • 本回合結束狀態:{7,6,4,2,12,1,77}\{7, 6, 4, 2, 12, 1, 77\},最大值 7777 已就位。
  • 本回合交換次數:44 次。

【第二回合(Pass 2)】(浮出次大值至索引 5)

  • 比較 array[0]=7array[0]=7 與 array[1]=6array[1]=6:7>67 > 6,交換(第 5 次)→{6,7,4,2,12,1,77}\rightarrow \{6, 7, 4, 2, 12, 1, 77\}
  • 比較 array[1]=7array[1]=7 與 array[2]=4array[2]=4:7>47 > 4,交換(第 6 次)→{6,4,7,2,12,1,77}\rightarrow \{6, 4, 7, 2, 12, 1, 77\}
  • 比較 array[2]=7array[2]=7 與 array[3]=2array[3]=2:7>27 > 2,交換(第 7 次)→{6,4,2,7,12,1,77}\rightarrow \{6, 4, 2, 7, 12, 1, 77\}
  • 比較 array[3]=7array[3]=7 與 array[4]=12array[4]=12:7≤127 \le 12,不交換。
  • 比較 array[4]=12array[4]=12 與 array[5]=1array[5]=1:12>112 > 1,交換(第 8 次)→{6,4,2,7,1,12,77}\rightarrow \{6, 4, 2, 7, 1, 12, 77\}
  • 本回合結束狀態:{6,4,2,7,1,12,77}\{6, 4, 2, 7, 1, 12, 77\},數值 1212 已就位。
  • 本回合交換次數:44 次。

【第三回合(Pass 3)】(浮出第 3 大值至索引 4)

  • 比較 array[0]=6array[0]=6 與 array[1]=4array[1]=4:6>46 > 4,交換(第 9 次)→{4,6,2,7,1,12,77}\rightarrow \{4, 6, 2, 7, 1, 12, 77\}
  • 比較 array[1]=6array[1]=6 與 array[2]=2array[2]=2:6>26 > 2,交換(第 10 次)→{4,2,6,7,1,12,77}\rightarrow \{4, 2, 6, 7, 1, 12, 77\}
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 五 題20 分

愛麗絲與鮑伯藉由非對稱式加密 RSA 進行資料加密傳輸,加密選擇之兩質數分別為 p=3p=3 及 q=11q=11。愛麗絲利用鮑伯提供之公鑰 (e=7,n)(e=7,n) 將訊息進行加密,鮑伯收到訊息後,使用私鑰 (d,n)(d,n) 進行解密,請計算私鑰可能 dd 值。

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題評量**RSA 非對稱式密碼系統(RSA Cryptosystem)之金鑰生成原理,涉及數論中的尤拉總計函數(Euler's Totient Function)與模反元素(Modular Multiplicative Inverse)**求解。

  1. 模數(Modulus): n=p×qn = p \times q
  2. 尤拉總計函數 ϕ(n)\phi(n): 當 pp、qq 為質數時,小於且互質於 nn 的正整數個數為: ϕ(n)=(p−1)(q−1)\phi(n) = (p - 1)(q - 1)
  3. 私鑰指數 dd 的定義: 公鑰指數 ee 與私鑰指數 dd 在模 ϕ(n)\phi(n) 下互為乘法反元素,滿足同餘方程式: e⋅d≡1(modϕ(n))e \cdot d \equiv 1 \pmod{\phi(n)} 即存在整數 kk,使得: e⋅d=k⋅ϕ(n)+1e \cdot d = k \cdot \phi(n) + 1

解題方法

步驟一:計算模數 nn 與尤拉函數 ϕ(n)\phi(n)

題目給定兩質數 p=3p = 3、q=11q = 11:

  • 模數 nn: n=p×q=3×11=33n = p \times q = 3 \times 11 = 33
  • 尤拉總計函數 ϕ(n)\phi(n): ϕ(n)=(p−1)(q−1)=(3−1)(11−1)=2×10=20\phi(n) = (p - 1)(q - 1) = (3 - 1)(11 - 1) = 2 \times 10 = 20

步驟二:確認公鑰指數 ee 之合法性

題目給定公鑰 e=7e = 7。 驗證 gcd⁡(e,ϕ(n))=gcd⁡(7,20)=1\gcd(e, \phi(n)) = \gcd(7, 20) = 1,兩者互質,符合 RSA 加密指數要求。

步驟三:求解私鑰指數 dd(模反元素)

依據定義,私鑰 dd 必須滿足: 7d≡1(mod20)7d \equiv 1 \pmod{20} 此式等價於尋找整數 kk,使得: 7d=20k+1  ⟹  d=20k+177d = 20k + 1 \implies d = \frac{20k + 1}{7}

由最小非負整數 kk 開始代入檢驗:

  • 當 k=0k = 0 時,d=17d = \frac{1}{7}(非整數)
  • 當 k=1k = 1 時,d=20(1)+17=217=3d = \frac{20(1) + 1}{7} = \frac{21}{7} = 3(整數解)

步驟四:給出 dd 值的可能範圍

在模算術體系中,同餘解具週期性,通解為: d≡3(mod20)  ⟹  d=3+20k(k∈Z)d \equiv 3 \pmod{20} \implies d = 3 + 20k \quad (k \in \mathbb{Z})

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

其他考古題