• 沒有找到結果。

  x 表示不大於x 的最大整數;

N/A
N/A
Protected

Academic year: 2021

Share "  x 表示不大於x 的最大整數; "

Copied!
1
0
0

加載中.... (立即查看全文)

全文

(1)

下列程序段中,所有未有列出宣告 (declaration) 的變量,均假設已經適當地宣告;而整數 (integer/int) 及長整數 (longint/long) 則分別為 16 位元及 32 位元有符號的整數。假設所有程序都正確地編譯,且沒有使用任何編譯器選 項(除C 程序的"-o"選擇外)。

符號

對於任何實數x,

(1)

  x

表示不大於x 的最大整數;

(2)

  x

表示不小於x 的最小整數;

(3) | x 表示 x 的絕對值。|

甲部

請為下列每題各選一個最適合的答案,然後把答案的字母 (A、B、C、D) 寫到答題紙對應的空格中。

1. 甲、乙和丙正在玩一個名為「石頭、布、剪刀」的遊戲。在每一回合,每一個遊戲者都需要選擇石頭、布或是剪 刀。石頭可以打敗剪刀。剪刀可以打敗布。布可以打敗石頭。如果遊戲者甲所選的打敗遊戲者乙所選的,那麼 遊戲者甲就打敗了遊戲者乙。如果遊戲者甲和遊戲者乙所選的東西一樣,他們就當打和。如果遊戲者乙打敗 遊戲者甲,那麼遊戲者甲就敗給了遊戲者乙。

以下哪個/哪些敍述必定正確?

(i) 若甲沒有打敗乙或與乙打和,則甲就是敗給乙。

(ii) 若甲敗給乙,同時丙敗給甲,則丙就是打敗了乙。

(iii) 當與一台隨機選擇石頭、布或剪刀的機器玩時,存在一種策略使得遊戲者勝出的機會大於落敗的機會。

A. 只有 (i) B. 只有 (i) 和 (ii) C. 只有 (ii) 和 (iii) D. (i)、(ii) 和(iii)

2. 承上題,甲、乙、丙現在玩一個名為「石頭、布、剪刀、繩」的遊戲。這個遊戲中,遊戲者多了一個選擇,名為

「繩」。繩打敗石頭和布,但敗給剪刀。

以下哪個/哪些敍述必定正確?

(i) 若甲沒有打敗乙或與乙打和,則甲就是敗給乙。

(ii) 若甲敗給乙,同時丙敗給甲,則丙就是打敗了乙。

(iii) 當與一台隨機選擇石頭、布、剪刀或繩的機器玩時,存在一種策略使得遊戲者勝出的機會大於落敗的 機會。

1

(2)

A. 只有 (iii) B. 只有 (i) 和 (ii) C. 只有 (i) 和 (iii) D. (i)、(ii)和(iii)

3. 承上題,遊戲再增加一個選擇,名為「刀」。刀可以打敗剪刀和繩,但敗給布和石頭。

以下哪個/哪些敍述必定正確?

(i) 若甲不是打敗乙或與乙玩和,則甲就是敗給乙。

(ii) 若甲敗給乙,同時丙敗給甲,則丙就是打敗了乙。

(iii) 當與一台隨機選擇石頭、布、剪刀、繩或刀的機器玩時,存在一種策略使得遊戲者勝出的機會大於落敗 的機會。

A. 只有 (i) B. 只有 (i) 和 (ii) C. 只有 (ii) 和 (iii) D. (i)、(ii)和(iii)

4. 問以下程序的輸出為何?

Pascal 版本 var

i, r : integer;

z : array[0..5] of integer;

procedure swap(a, b : integer);

var

tmp : integer;

begin

tmp := a;

a := b;

b := tmp;

end;

begin

2

(3)

z[0] := 2;

z[1] := 3;

z[2] := 1;

z[3] := 4;

z[4] := 5;

for i:= 0 to 4 do for r := 1 to 4 do

if z[r - 1] > z[r] then swap(z[r - 1], z[r]);

for i:= 0 to 4 do write(z[i], ' ');

end.

C 版本

#include <stdio.h>

void swap(int a, int b){

int tmp;

tmp = a;

a = b;

b = tmp;

}

int main(){

int z[5], i, r;

z[0] = 2;

z[1] = 3;

z[2] = 1;

z[3] = 4;

z[4] = 5;

for (i = 0; i < 5; ++i) for (r = 1; r < 5; ++r) if (z[r - 1] > z[r]) swap(z[r - 1], z[r]);

for (i = 0; i < 5; ++i) printf("%d ", z[i]);

return 0;

}

A. 1 2 3 4 5 B. 4 3 2 5 1 C. 2 3 1 4 5 D. 5 4 3 2 1

5. 在棋盤上,如果兩隻后處於同一行、同一列或同一對角線上,則它們相互攻擊。問下列哪個/哪些敍述必定 正確?

3

(4)

(i) 在N×N 的棋盤上可以且最多可以放置 N 隻后,使得沒有任何兩隻后相互攻擊。

(ii) 在N×(N+1)的棋盤上, 可以且最多可以放置(N+1)隻后使得沒有任何兩隻后相互攻擊。

A. 只有 (i) B. 只有 (ii) C. (i) 與 (ii) D. 兩者皆否

4

(5)

6. 細閱以下程序段:

Pascal 版本 if n < m then begin

t := n;

n := m;

m := t;

end;

i := 1;

while (n * i mod m <> 0) do i := i + 1; {*}

writeln(n * i);

C 版本

(6)

if (n < m){

t = n;

n = m;

m = t;

} i = 1;

while (n * i % m != 0)

i++; //*

printf("%d\n", n * i);

(7)

以下哪個/哪些敍述是正確的?

(i) 標示為{*} (C 版本為 // * )的程序碼不會被執行當且僅當程序段運行前,n 是 m 的倍數。

(ii) 此程序段尋找m 和 n 的最小公倍數。

(iii) i 的最大值是 m+1.

A. 只有 (i) B. 只有 (ii) C. 只有 (i) 和 (ii) D. 只有 (ii) 和 (iii)

7. 細閱以下函數﹕

Pascal 版本

procedure f(n, m, num : integer);

var i : integer;

begin

if n <> 0 then

for i := 0 to m - 1 do

f(n - 1, m, num * 10 + i) else

writeln(num);

end;

C 版本

(8)

void f(int n, int m, int num){

int i;

if (n != 0)

for (i = 0; i <= m - 1; ++i)

f(n - 1, m, num * 10 + i);

else

printf("%d\n", num);

}

假設n 和 m 皆為正數,和上述函數不會引致溢位問題。以下哪一/哪些關於呼叫 f(n,m,0)的敍述為真?

(i) 上述函數在不引致運行錯誤下結束。

(ii) 輸出有mn行。

(iii) 每行輸出都是一個n 位數字。

A. 只有(iii) B. 只有(i)和(ii) C. 只有(i)和(iii) D. (i)、(ii)和(iii)

(9)

8. 在一幅地圖上,有些城巿與城巿之間以雙向道路相連。在任何旅程中,我們從任一城巿甲出發,探訪一些其 他的城巿,再回到城巿甲。除城巿甲外,每個城巿都只可以被探訪最多一次,而且我們不可以重複通過同 一道路。我們發現現有的地圖上,有最少一個旅程,而且所有旅程都剛好通過奇數數目的道路。下列哪個敍 述必定正確?

A. 我們無法將城巿分成兩組,使得任何以道路直接相連的城巿都屬於不同的組別 B. 城巿的數目必為奇數。

C. 城巿數目超過一的地圖沒可能符合條件 D. 以上皆非

9. 一條隊列可以有以下的運作﹕

進隊﹕ 在隊尾插入一個元素 出隊﹕ 刪除在隊頭的元素

已知隊列中有n 個元素。你需要刪除現在在隊尾的元素但要保持其他元素的排列次序。問你最少需要多少次 運作去能達到目的。

A. 1 B. 2n-2 C. 2n-1 D. 2n

細閱以下資料,然後解答題10 至 11。

下列地圖中,圓形及線段分別代表城鎮和道路。有一位商人打算以最少時間從城鎮甲走到城鎮乙。假設走完一條 道路需時一天。

10. 問商人需要多少時間從城鎮甲走到城鎮乙?

(10)

A. 2 天 B. 3 天 C. 4 天 D. 5 天

11. 不幸地,地震發生了。其中一個城鎮被破壞了。另外尚有一條道路被破壞了,而其他的道路和城鎮都完好無 缺。商人無法通過被破壞的道路,或任何連接被破壞的城鎮的道路。幸運地,我們知道城鎮甲和城鎮乙完好 無缺,且連接城鎮甲或城鎮乙的道路均沒有被破壞。假設商人知道哪條道路和哪個城鎮被破壞,問商人從城 鎮甲走到城鎮乙最多需要多少天?

A. 3 B. 4 C. 5

D. 無法確定

(11)

12. 細閱以下程序段﹕

Pascal 版本

for j := 0 to n - 1 do begin

for i := 0 to m - 2 do y[i] := x[i + 1];

y[m - 1] := x[0];

end;

a:=0;

b:=0;

for i:=0 to m-1 do

if y[i]<>x[(i+n) mod m] then a:=1;

for i:=0 to m-1 do

if y[i]=x[(m-n+i) mod m] then b:=1;

C 版本

(12)

for (j = 0; j < n; ++j){

for (i = 0; i < m - 1; ++i) y[i] = x[i + 1];

y[m - 1] = x[0];

} a=0;

b=0;

for (i=0;i<m-1;++i)

if (y[i]!=x[(i+n) % m]) a=1;

for (i=0;i<m-1;i++)

if (y[i]!=x[(m-n+i)%m]) b=1;

(13)

假設 y[0..m-1] (C 版本為 y[m]) 和 x[0..m-1] (C 版本為 x[m]) 為數列。n 和 m 為正整數且n 小於 m。在以上的程序段運行後,以下那個敍述是對的?

A. a 的值為 0 B. b 的值為 0

C. y 是由把 x 倒轉而得出的

D. y 的每個元素均與 x 中同位置的元素相等

13. 細閱下列程序段:

Pascal 版本 temp := 0;

for i := 0 to 9 do

temp := f(temp, A[i]);

writeln(temp);

C 版本

(14)

temp = 0;

for (i = 0; i < 10; ++i)

temp = f(temp, A[i]);

printf("%d\n", temp);

設 A[0..9] 是一個正整數數列,且各元素均少於 1000。以下那個是敍述是錯的?

A. 如果 f(x,y) 的傳回值是 x+1, 程序段的輸出就會是 10

B. 如果 f(x,y) 的傳回值是 x 和 y 的最大值,程序段的輸出就會是 A 數列中元素的最大值 C. 如果 f(x,y) 的傳回值是 x+y,程序段的輸出就會是 A 數列所有元素的總和

D. 如果 f(x,y) 的傳回值是 x*y,程序段的輸出就會是 A 數列所有元素的積

(15)

14. 在假設溢位不會發生的情況下,以下哪個/哪些程序段可以將整數變量x 和 y 的數值互換?

Pascal 版本 (i)

x := 2 * x + 2 * y;

y := 2 * y - x;

x := x - y;

y := y div 2;

x := x div 2;

(ii)

x := x div 2 + y div 2;

y := y - x;

x := x - y;

x := x * 2;

y := y * 2;

C 版本 (i)

x = 2 * x + 2 * y;

y = 2 * y - x;

x = x - y;

y = y / 2;

x = x / 2;

(ii)

(16)

x = x / 2 + y / 2;

y = y - x;

x = x - y;

x = x * 2;

y = y * 2;

A. 只有(i) B. 只有(ii) C. (i) 和 (ii) D. 以上皆非

15. 細閱下列程序:

Pascal 版本 var

i:longint;

begin

i := 2;

while i <> 0 do begin

i := i + 2147483647; {*}

end;

end.

C 版本

(17)

#include<stdio.h>

int main(){

long i;

i = 2;

while (i != 0)

i = i + 2147483647; //*

return 0;

}

對於以上程序,以下哪個/哪些是正確的?

(i) 程序不會停止運行。

(ii) 程序會有運行錯誤。

(iii) 如果將用{*}(C Version 為 //*)標示的那行改為"i:=i+2147483647;"(C 版本 為"i=i+2147483647+1;"),程序仍會正常地結束。

A. 只有(i)和(ii) B. 只有(ii)和(iii) C. (i)、(ii)和(iii) D. 三者皆非

16. 在一個 3x3 的棋盤上,假設一隻棋子可以任意跳到一個未到達過的格子,而每一跳所需的能量為目的地與 起跳點的垂直距離加上水平距離。假設可以在任何一格開始,問到達所有其他格子所需的能量最大值和最 小值分別是?

最小值 最大值

A. 8 18

B. 8 24

C. 11 15

D. 11 16

17. 現有 17 枝火柴砌成的一個 2 x 3 的板。在只移除其中兩枝不在最外圍的火柴的條件下,有多少種方法使板變 為只有四個不重疊的長方形?

A. 12

(18)

B. 13 C. 14 D. 15

18. 細閱以下程序﹕

Pascal 版本 var

X, Y : integer;

begin

readln(X, Y);

writeln((X - Y) mod 6);

writeln(((X mod 6) - (Y mod 6)) mod 6);

end.

C 版本

#include <stdio.h>

int X, Y;

int main() {

scanf("%d%d", &X, &Y);

printf("%d\n", (X - Y) % 6);

printf("%d\n", ((X % 6) - (Y % 6)) % 6);

return 0;

}

以下那組X 和 Y 的值會使以上程序輸出兩個不同的整數?

X Y

A. 1 1 B. 3 4 C. 8 10 D. 9 13

19. 已知函數random()會回傳由 0 到 99 的整數,以及函數 abs(x)會回傳 x 的絕對值。問以下那一/那些句子 會製造由0 至 9 (包括 0 和 9) 的整數?

(i) random() div 100 * 10 (C 版本為 random()/100*10) (ii) random() div 2 div 5 (C 版本為 random()/2/5)

(iii) abs(random()-50) div 5 (C 版本為abs(random()-50)/5)

A. 只有 (ii) B. 只有 (iii) C. 只有 (i) 和 (ii) D. 只有 (ii) 和 (iii)

(19)

細閱以下程序,然後解答題20 至 21。

Pascal 版本 var

s : string;

i, j : integer;

begin

s := '110001';

j := 1;

for i := 1 to 6 do begin

if s[i] = '0' then j := (j shl 1 )or 1;

if s[i] = '1' then j := j shr 1;

end;

writeln(j);

end.

C 版本

#include <stdio.h>

int main() {

char s[] = "110001";

int i, j;

j = 1;

for (i = 0; i < 6; i++) { if (s[i]=='0')

j = (j << 1) | 1;

if (s[i] == '1') j >>= 1;

}

printf("%d\n", j);

return 0;

}

20. 問上述程序段的輸出為何?

A. 2 B. 3 C. 4 D. 5

21. 假設你能夠用其他字符串代替'110001' (C 版本為 "110001") 下列哪一/哪些是可能給出的輸出?

(i) 7 (ii) 9 (iii) 16 (iv) 31

A. 只有 (iii) B. 只有 (i) 和 (iii)

(20)

C. 只有 (ii) 和 (iii) D. 只有 (ii) 和 (iv)

22. 給出五個正整數, 以下哪個/哪些敍述是正確?

(i) 我們可以選擇最少一個數字使得它們的和為5的倍數。

(ii) 我們可以選擇其中兩個正整數使得它們的和為奇數。

A. 只有(i) B. 只有(ii) C. (i)和(ii) D. 以上皆非

23. 設有 N 個學生。若學生 A 和學生 B 是朋友,我們說 A 和 B 之間有一段友誼。每段友誼只包括剛好兩個學生。

若兩段友誼所包括的兩對學生並不相同,這兩段友誼並不相等。

定義「能夠連絡」為﹕

1. 若學生 A 和 B 是朋友,則 A 能夠連絡 B, B 亦能夠連絡 A ;

2. 若學生 A 能夠連絡 B,並且 C 是 B 的朋友,則 A 能夠連絡 C, C 亦能夠連絡 A 。

(21)

下列哪一/哪些敍述句正確?

A. 最多可能的友誼數目為 N2

B. 若最少有 N-1 段友誼,則每個學生都可以連絡其他學生。

C. 若學生 C 並不能夠連絡學生 A,則對於任何 A 能夠連絡的學生,C 都不能夠連絡他們。

D. 若所有學生都可以連絡其他學生,則一定存在最少 N 段友誼。

24. 下列程序段的目的為何?

Pascal 版本 k := 1;

i := 2;

while (i < n) and (i < m) do begin

if n mod i = m mod i then k := i;

i := i + 1;

end;

writeln(k);

C 版本 k = 1;

i = 2;

while (i < n && i < m){

if (n % i == m % i) k = i;

i++;

}

printf("%d\n", k);

A. 尋找 n+m 的因數中少於 min(n,m)的最大整數 B. 尋找能同時整除 m 和 n 的最大整數

C. 尋找 |n-m| 的最大因數

D. 尋找少於min(n,m)並不整除 m 和 n 的最大整數

細閱以下資料,然後解答題25 至 26。

“Wordbot” 是一種能夠跟據指令而行走的機器人。指令是由小寫英文字母組成的字串。

Wordbot最初在上圖的圓形 1 並開始行走。

(22)

當Wordbot 接收指令時,它會逐一處理指令中的每個字元。對於每一個字元,它會嘗試尋找在其位置的圓形上,

帶有字元並向外的箭號,並跟據此箭號行走。若沒有此箭號,Wordbot 便會退回圓形 1。若 Wordbot 到達圓形 5,它便會發出「嗶」聲,並自行關機。

例如,若指令是「ray」,Wordbot 便會從圓形 1 走到圓形 2,然後再走到圓形 3,最後回到圓形 1。

25. Wordbot 會發出「嗶」聲當且僅當

A. “r”、“a”和“e”都出現在指令中 B. “rare”一字出現在指令中

C. 指令以“rare”為開首 D. “rarer”一字出現在指令中

(23)

26. 如果由圓形 4 至圓形 3 帶有字元“a”的箭頭被移除,下列哪一/哪些敘述正確?

(i) 即使「rare」沒有在指令中出現,Wordbot 亦可能發出「嗶」聲。

(ii) 即使「rare」在指令中出現,Wordbot 亦可能不會發出「嗶」。

A. 只有(i) B. 只有(ii) C. (i) 和 (ii) D. 兩者皆否

27. 問以下程序的輸出為何?

Pascal 版本 var

i, j, k : integer;

begin k := 0;

for i := 1 to 2009 do begin

k := k + i mod 2 ; k := k + i mod 4 ; k := k + i mod 6 ; end;

writeln(k);

end.

C 版本

(24)

#include <stdio.h>

int main() { int i, j, k;

k = 0;

for (i = 1; i< = 2009; ++i) {

k = k + i % 2;

k = k + i % 4;

k = k + i % 6;

}

printf("%d\n", k);

return 0;

}

A. 2009 B. 6027 C. 9043 D. 18086

28. 在一個 3 列(row)、4 行(column)的棋盤上,有多少方法可以放置 6 隻棋子,使得:

(i) 沒有三隻棋子處於同一列, 及 (ii) 沒有三隻棋子處於同一行?

A. 108 B. 114 C. 210 D. 216

29. 細閱以下程序﹕

Pascal 版本 var

g : integer;

(25)

function F(x, y: integer): integer;

begin

if (x = g) or (x = y) then F := 1

else begin

f := F(x - 1, y - 1) + F(x - 1, y);

end;

end;

begin

g := 0; {*}

writeln(F(4, 3));

writeln(F(4, 2));

end.

C 版本

(26)

#include <stdio.h>

int g;

int F(int x, int y){

if (x == g || x == y) return 1;

else{

return F(x - 1, y - 1) + F(x - 1, y);

} }

int main() { g = 0; //*

printf("%d\n", F(4, 3));

printf("%d\n", F(4, 2));

return 0;

}

以下那個/那些敍述必定正確?

(i) 第一行的輸出為 5。

(ii) 所輸出的兩行是相等的。

(iii) 如果標有{*} (C 版本為 //*) 的那行改為 g := 1; (C 版本為 g = 1;),以上程序所輸出的兩行是 相等的。

A. 只有 (i) B. 只有 (iii) C. 只有 (i) 和 (ii) D. 只有 (ii) 和 (iii)

30. 細閱以下程序段﹕

Pascal 版本 for i:=0 to 99 do

x[i]:=0;

i := 0;

j := 0;

x[0] := y[0];

while j < 100 do begin

while (j < 100) and (x[i] = y[j]) do j := j + 1;

i := i + 1;

(27)

if (j < 100) and (x[i - 1] <> y[j]) then

x[i] := y[j];

end;

m := i + 1;

C 版本

(28)

for (i=0;i<=99;++i) x[i]=0;

i = 0;

j = 0;

x[0] = y[0];

while (j < 100){

while (j < 100 && x[i] == y[j]) j = j + 1;

i = i + 1;

if (j < 100 && x[i - 1] != y[j]) x[i] = y[j];

}

m = i + 1;

(29)

已知 x[0..99] (C 版本為 x[100]) 和 y[0..99] (C 版本為 y[100]) 為整數數列且 y 己被排序。以下那 個/那些敍述為正確?

(i) y 的每個元素出現在 x 僅一次 (ii) x 也是已排序

(iii) m 的值小於 y 的元素數目

A. 只有 (i) B. 只有 (i) 和 (ii) C. 只有 (ii) 和 (iii) D. 以上皆是

甲部完

(30)

乙部

下列各空格分別命名為A 至 J,請在答題紙上對應的地方填上答案:

(答題紙上每個小格只可填上一個字符,答案長度不得多於該題提供的小格數目。)

注意:

(1) 答案不可以包括 C 語言的 ?: 運算元。

(2) 除非適當的函數庫已被引用,否則答案不可以包括任何函數庫內的函數。

1. 上圖顯示了 13 個圓形,編號為 1 至 13。1 號圓形是在第 0 層,2 至 5 號圓形是在第 1 層,其他的圓形均為第 2 層。請以n 寫一表示式表示編號為 n 的圓形所身處的層數。 (1 ≤ n ≤ 13).

__

________A _____________ ___

2. 上圖顯示了 6 個圓形。你可給它們編上 1 至 6 的編號。注意不可有兩個圓形擁有同一編號。每條連接圓形的直 線的價值為其所連接的圓形的編號的絕對差。

請給圓形編上編號使得没有兩條直線的價值為一樣。

__

________B _____________ __

3. 已知有一隻機械臂可以將一堆堆起了的箱子由一間房搬到另一間。一開始有三間房間。在最左邊的房間有一 堆打直堆於的箱子。每個箱子均有一個不會重覆的整數作為其編號。機械臂一開始會在最左邊的房間的天花 板。以下是對這機械臂的指令﹕

 L: 使機械臂向左移動。(如果機械臂已在最左邊的房間,則它不會對此指令有反應。)

 R: 使機械臂向右移動。(如果機械臂已在最右邊的房間,則它不會對此指令有反應。)

(31)

 U: 使機械臂在其所在房間拾起於在最頂端的箱子。(如果機械臂已手持箱子,或其所在房間没有箱子,

則它不會對此指令有反應。)

 D: 使機械臂在其所在房間放下手持的箱子,使那箱子於在其房間所堆起的箱子的最頂端。(如果機械 臂並無手持箱子,則它不會對此指令有反應。)

 n(<command>): 執行 n 次 command。

例如﹕

1 2 3

在上圖中,每一直行代表一個房間。最左邊的房間有3 個箱子,編號分別為 1,2 和 3。"2(URD)"這一串指令 會使機械臂把1 號箱子從最左邊的搬到最右邊的房間。

對於以下兩條問題,請你寫出一串指令使得箱子由原本的排列方式變為目標的排列方式。請注意指令的長 度需要不可多於指定的長度限制。

長度限制為 11

1 1

2 > 2

3 3

4 4

C

長度限制為 13 1

2 >

3

4 5 6

5 3 4

6 1 2

D

4. 細閱以下程序段:

Pascal 版本 var

(32)

x, y: integer;

function A(i : integer; j : integer):

integer;

begin

A := (i + j) mod 4;

end;

function B(i : integer): integer;

begin

if i = 1 then B := 0 else B := 1;

end;

begin

readln(x, y);

if E = 1 then writeln('x equals 0');

if F = 1 then writeln('x equals 1');

if G = 1 then writeln('x equals y');

end.

C 版本

#include<stdio.h>

int x, y;

int A(int i, int j){

return (i + j) % 4;

};

int B(int i){

if (i == 1) return 0;

else

return 1;

};

int main(void){

scanf("%d%d", &x, &y);

if( E == 1)

printf("x equals 0\n");

if( F == 1)

printf("x equals 1\n");

if( G == 1)

printf("x equals y\n");

return 0;

}

(33)

假設被輸入的數字是0 至 3(包括 0 和 3)的整數。 請只使用字元 “A”、“B” 、“x” 、“y” 、“(”、“)” 及

“,” 填充。

(34)

5. 一艘可以運載 10 人的船在河中行駛。以下是河道的地圖。地圖每一個圓圈為可停泊點。每一個箭 頭代表一條河道以及其水流的方向,以及船可以其連接的停泊點之間行走。S 為船的起始點。

當船在停泊點時,它可以被實行以下三種運作的其中一種﹕

+ : 請一位乘客上船,然後順流而下。

- : 請一位乘客下船,然後順流而下。

< : 逆流而上。

如果一艘船要逆流而上,它就是往箭頭的相反向行駛直至到達下一個停泊點。如果船本身在S 就會停留不動

可是,因為每條河道的水深不同,每條河道對順流的船有相應的重量限制。只有當船上的乘客數目不多於 河道的重量限制才可於那河道順流而下。在上圖中,每個箭頭附近的數字就是那河道的重量限制。

如果一艘船要順流而下,它由現在的停泊點駛向附合重量限制的河道。如果船可符合重量限制的河道多於 一條,則當中重量限制最小的河道會被挑選。如果一艘船要順流而下,但無合適河道,它會停留在其停泊點

例如﹕如果一艘船實行"- + - -" 的運作序列,它將會到達 A。

請給出運作序列使得船能到達B。 H (最多只可有 5 個運作。)

請給出運作序列使得船能到達C。 I (最多只可有 14 個運作。)

請給出運作序列使得船能到達D。 J (最多只可有 15 個運作。)

34

(35)

全卷完

35

參考文獻

相關文件

。若以圓教望之前四。皆是應根權施設也

以下簡單介紹魔術三角形: 如圖 1, 若三角形每邊有 三個數且數字和都是定值, 稱為 3 階 (傳統) 魔術三角形; 如圖 2, 若每邊有三 個數且較大兩數和減最小數的差都是定值, 稱為

此極限便是觀察分子或者分母誰「跑得比較快」。若是分子 趨近無窮大的速度快很多,則極限為無窮大 ,若是分母快很 多,則極限便是

若有比丘,如是不恭敬、不隨順[大]師而住;於法……[乃

根據蕭燦(2012)的說明,《數》書編號簡 236 枚,無編號簡 18 枚,簡文字數約有 6300 字。至於竹簡的形制,則大多數簡長約 27.5 釐米,少數完整簡長約 27.0

〔備註 1:小學數學科修訂課題有關圓形圖的學習重點雖然只要求學生闡釋 涉及簡單計算的圓形圖,例如每個扇形的圓心角須為 30º 或

如圖,D、E、F 三點分別在圓內、圓上、圓外,則∠ADB、∠AEB、∠AFB 的大小關係為ˉˉ ˉˉ。(請由小到大排列)... 小康要平分一個半徑為 8

定義 7.4-1 內接與外切.