全國技藝競賽

97
程程程程程程程程程程程程 程程程程程程

Upload: violet-jones

Post on 03-Jan-2016

57 views

Category:

Documents


0 download

DESCRIPTION

程式設計 比賽選手訓練研討. 全國技藝競賽. 研習計劃. 簡介 (0.5hr). 97 年承辦學校為鳳山商工 http://203.72.197.222:8080/JContest/ 98 年承辦學校為三信商工 http://163.32.84.66/JContest/ 99 年承辦學校為松山高商 http://www.ssvs.tp.edu.tw/tw/index.html. 競賽規則. 參加人數 (20/49 、 25/60 、 32/75) ---10/75 金手獎 可運用時間 ( 術科 3 小時 ) 成績計算規則 術科佔 70%. 評分標準. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 全國技藝競賽

程式設計比賽選手訓練研討

全國技藝競賽

Page 2: 全國技藝競賽

研習計劃時程 研習主題 內容

9: 00~9: 30全國技藝競賽程式設計競賽簡介

1. 競賽規則簡介2. 準備策略研討

9: 30~10:00

解題模式、解題技巧研討1. 建立標準化的解題模式2. 簡化輸入資料、輸出結

果動作3. 解題技巧研討

10: 10~11:00

競賽題型分類研討 (一 )1. 因數、質數題型2. 累加題型3. 排序題型

11: 10~12:00

競賽題型分類研討 (二 )1. 機率統計題型2. 遞迴題型3. 其他題型

Page 3: 全國技藝競賽

簡介 (0.5hr)

• 97 年承辦學校為鳳山商工 http://203.72.197.222:8080/JContest/• 98 年承辦學校為三信商工 http://163.32.84.66/JContest/• 99 年承辦學校為松山高商

http://www.ssvs.tp.edu.tw/tw/index.html

Page 4: 全國技藝競賽

競賽規則– 參加人數 (20/49 、 25/60 、 32/75) ---10/75 金手

獎– 可運用時間 ( 術科 3 小時 )

– 成績計算規則• 術科佔 70%

Page 5: 全國技藝競賽
Page 6: 全國技藝競賽
Page 7: 全國技藝競賽

評分標準– 術科程式正確性 100%( 每題分數不一 ) 。– 術科程式每題評分只有對與錯兩種,對則給滿分,

錯則不給分 ( 即以零分計算 ) 。– 以學、術科比例合計為個人總成績,依參賽者總

成績高低決定名次。若總成績相同則以術科成績較高者為先,若術科成績仍相同,則依術科繳卷時間先者為先,若繳卷時間仍相同則依序比較配分較高題得分者為領先。

Page 8: 全國技藝競賽

術科競賽方式– 實地上機撰寫程式。– 給予 1 組測試資料檔案 ( 包含輸入檔及其正確解

答之輸出檔 ) ,格式為文字檔。– 試卷中每一試題提供 2 組測試資料及其正確解答

以供學生測試用。

Page 9: 全國技藝競賽

– 試題之輸出入資料均有其格式及範圍之要求,選手應依指定之格式及範圍作答。

– 執行檔執行時需直接讀取執行檔所在資料夾下的測試檔,並將其結果輸出至同一資料夾之輸出檔。( 用 vb2008 的要注意了 )

– 程式執行過程中不可有任何介面出現。• 程式設計結果各存 1 份於硬碟及隨身碟中,並請勿關

機。

Page 10: 全國技藝競賽

歴屆選手參賽狀況研究– 成績分佈

• 98 成績• 97 成績• 96 成績• 95 成績

– 常見的狀況

Page 11: 全國技藝競賽
Page 12: 全國技藝競賽
Page 13: 全國技藝競賽
Page 14: 全國技藝競賽
Page 15: 全國技藝競賽

95 年競賽成績

Page 16: 全國技藝競賽

題目趨勢分析

• 依年度• 依題型• 依解法• …

Page 17: 全國技藝競賽

準備策略 (0.5hr)

• 學會第一招就有資格當選手• 三招練熟全國技藝競賽名次在望• 多觀摩勤練習構築金牌夢

Page 18: 全國技藝競賽

學會第一招就有資格當選手 I• 讀入資料檔案、輸出結果檔案•  • VB6• Open “ 輸入資料檔名 .txt” For Input As #1• Input #1, 欄位 1, 欄位 2 ….•  • Open “ 輸出結果檔名 .txt” For Ouput As #2• Write #2, 欄位 1, 欄位 2 ….•  • VB2008• 只要會按「滑鼠右鍵」,系統會自動出現指令讓您

Page 19: 全國技藝競賽

學會第一招就有資格當選手 II• 讀入資料檔案、輸出結果檔案•  VB6• Open App.Path & "/test1.txt" For Input As #1• Open App.Path & "/result1.txt" For Output As #2 

Page 20: 全國技藝競賽

學會第一招就有資格當選手 III• 讀入資料檔案、輸出結果檔案•  VB2008( 按滑鼠右鍵會自動產生 )• Dim fileContents As String• fileContents =

My.Computer.FileSystem.ReadAllText(Application.StartupPath & "\Test.txt“)

• My.Computer.FileSystem.WriteAllText(Application.StartupPath & "\result.txt", temStr, False)

Page 21: 全國技藝競賽
Page 22: 全國技藝競賽

三招練熟全國技藝競賽名次在望• 循序、選擇、迴路 • 所有題目的解題邏輯都是由這三個程式設

計結構組成,熟練加活用後,解個三題基本題,已然名次在望。 (96 年因題目較簡單,要 5 題才有名次, 95 年術科解 3 題即可擠進前 20 名,解 4 題就有選手得到第11 名, 98 年解 3 題即可得到優勝 )

Page 23: 全國技藝競賽

多觀摩勤練習構築金牌夢• 善用資源,廣泛收集考題,多觀摩、勤練習,構築金牌夢

Page 24: 全國技藝競賽

解題模式、解題技巧研討 (1hr)

• 界定問題分析題目需求實作驗證答案的標準流程建立

• 簡化輸入資料、輸出結果動作• 建立標準化的解題架構

Page 25: 全國技藝競賽

標準解題架構

• Input:讀取資料檔資料至參數中• Process:利用輸入的資料運用演算方法

( 比較、交換、排序、累加… .) ,得到結果• Output:輸出結果

Page 26: 全國技藝競賽

簡化輸入資料、輸出結果動作

Page 27: 全國技藝競賽

比賽常用解題技巧

• 比大小• 交換• 排序• 搜尋• 累加

• 查表• 窮舉 &篩選• 遞迴• 由 3 次 (固定次

數 )推演至 n 次

Page 28: 全國技藝競賽

比賽常見處理的資料類型• 數字處理• 文字處理• 陣列處理

• 時間與集合資料型態資料是未來的出題方向?

Page 29: 全國技藝競賽

演繹式的解題模式•取一組資料做出一組資料處理結果輸出結果至螢幕

•改為二組資料•改為 N 組資料•套用讀入資料檔、輸出結果檔

模式,完成解題

Page 30: 全國技藝競賽

演繹式的解題模式例 I

Page 31: 全國技藝競賽

演繹式的解題模式例 II

Page 32: 全國技藝競賽

演繹式的解題模式例 III

Page 33: 全國技藝競賽

演繹式的解題模式例 IV

Page 34: 全國技藝競賽

演繹式的解題模式例 V

Page 35: 全國技藝競賽

演繹式的解題模式例 VI

Page 36: 全國技藝競賽

演繹式的解題模式例 IIV

Page 37: 全國技藝競賽

Divide-and-conquer•分裂並各個擊破•將一個大問題切割成獨立的小問題來解決,且小問題與原先問題之解決方法是一樣的,差別只在於問題的大小

Page 38: 全國技藝競賽

Divide-and-conquer例

Page 39: 全國技藝競賽

解題技巧研討

Page 40: 全國技藝競賽

時間考量• 術科 180分鐘

–每題可運用時間平均為 22.5 分鐘–應先掌握基本題,再花時間解評估

需花 20 分鐘以上題目

Page 41: 全國技藝競賽

相關的知識• 相關的知識

–基本資料結構及演算法概念–基本數學及統計學概念

Page 42: 全國技藝競賽

常用函數函數 說明 範例 值Abs(X) 取 X的絕對值 Y=ABS(-3) Y=3

Int(X)取不大於 X的最大整數 Y=Int(3.5)

Y=Int(-3.2)Y=3Y=-4

Join(X,a)合併陣列為 以 a符號 分隔的字串

x(0) = "Hello"x(1) = "World"Y= join(x,"-")

Y = "Hello-World"

Len(X)X 的字串長度 X= “Hello”

Y=len(X)Y=5

Mid(X,a,b)

自字串 X的第 a個字起取 b個字

Y = mid(“Hello”,2,3) Y="ell"

Right(X,a) 取字串 X的右邊 a個字 Y=right(“Hello”,4) Y = “ello”

Rnd 產生 0~1之間的亂數 Y = rnd()

Split(X,a)以 a為分隔符號,將 X字串打散成陣列

X = “Hello-World”Y = split(X,"-")

Y(0)=HelloY(1) = World

UBound(X)

求陣列 X的最大註標值 Dim X(12) as IntegerY = Ubound(X)

Y = 12

Val(X) 將 X轉為數值 Y = val(“123”) Y = 123

Page 43: 全國技藝競賽

選用 VB2008參賽的優勢與注意事項(1hr)

• 使用非承辦單位提供之軟體,需於規定日期前將原版光碟寄達承辦單位,由承辦單位審查。

• 執行檔執行時需直接讀取執行檔所在資料夾下的測試檔,並將其結果輸出至同一資料夾之輸出檔。

• 以 VB2008 參賽的優缺點

Page 44: 全國技藝競賽

窮舉法?• 缺點

–電腦花較多的時間• 優點

– 人花較少的腦力• 比賽時,做得出來,就是好方法。• 比賽評分標準的速度,指的是選手做出來

的速度,不是電腦程式執行的速度

Page 45: 全國技藝競賽

窮舉法例 I

Page 46: 全國技藝競賽

窮舉法例 II

Page 47: 全國技藝競賽

區域變數或全域變數?• 善用副程式,但因程式小,可考慮使用全域變數,節省處理參數傳遞問題。

Page 48: 全國技藝競賽

最令人擔心的題目?• 沒有人解的出來的題目

– 當少出一題看待• 只有少數人解的出來的題目

– 總是要這樣,才方便產生前面名次吧!

• 最令人擔心的題目– 不難,但很花時間的題目– 解這一題,但耗掉大部份時間,少做好幾題。– 總是要有這樣的題目,才好區別榜上有名否

Page 49: 全國技藝競賽

考題分類研究

Page 50: 全國技藝競賽

因數、質數題型• s96-1 (最大公約數 12%) 6

• s93-3 (歐基里德輾轉相除法 ) 5

• s94-1 ( 程式設計分組 14 分 ) 8

• s95-6 (Ugly Number 的質因數問題 10%)

• s93-7 ( 一個數值分解成兩質數和 )

Page 51: 全國技藝競賽

S96-1 求最大小因數• Function gcd(ByVal a, ByVal b)• While a <> b• If a > b Then• a = a - b• Else• b = b - a• End If• End While• gcd = a• End Function

Page 52: 全國技藝競賽

S94-1 程式設計分組 (窮舉 )

• nMin = n(1)• For i = 1 To sn• If n(i) < nMin Then nMin = n(i)• Next i• • Gn = 1• For i = 1 To nMin• nFlag = True• For j = 1 To sn• If n(j) Mod i <> 0 Then nFlag = False• Next j• If nFlag = True Then Gn = i• Next i

Page 53: 全國技藝競賽

S95-6 Ugly Number 質因數問題I

Dim n As Integer = 1

Dim ord As Integer = 0

While ord < lineArray(i)

If check(n) Then

ord = ord + 1

End If

n = n + 1

End While

Page 54: 全國技藝競賽

S95-6 Ugly Number 質因數問題II

Function check(ByVal n) As Boolean

While n Mod 5 = 0

n = n / 5

End While

While n Mod 3 = 0

n = n / 3

End While

While n Mod 2 = 0

n = n / 2

End While•

If n = 1 Then check = True Else check = False End If End Function

Page 55: 全國技藝競賽

S93-7 分解為兩質數和 I

Private Function checkP(a) As Boolean

checkP = True

i = 2

Do While i < a

If a Mod i = 0 Then

checkP = False

Exit Do

End If

i = i + 1

Loop

End Function

Page 56: 全國技藝競賽

S93-7 分解為兩質數和 II

n = InputBox("n=")

For i = 2 To n / 2

n1 = i

n1f = checkP(n1)

n2 = n - n1

n2f = checkP(n2)

If n1f = True And n2f = True Then

Print n1; "+"; n2

'Exit For

End If

Next

Page 57: 全國技藝競賽

累加題型

• s96-2 ( 字串處理 10%) 15• s94-5 ( 字串處理, 12 分 ) 17• s93-5 (隔日二倍給錢 ) 18• s93-6 (期末領回 ) 20• s95-1 ( 國際標準書碼 ISBN 的檢測 10%)

20

Page 58: 全國技藝競賽

S96-2阿拉伯數字有幾個?• Function NN(ByVal str1)

• Dim counter As Integer = 0

• For i As Integer = 1 To str1.ToString.Length• If Mid(str1, i, 1) >= "0" And Mid(str1, i, 1) <= "9" Then

• counter = counter + 1

• End If

• Next

• NN = counter

• End Function

Page 59: 全國技藝競賽

S93-5隔日二倍給錢 n(1) = 1

n(2) = 2

For i = 3 To 30

j = i - 1

While j >= 1

n(i) = n(i) + n(j)

j = j - 1

Wend

n(i) = n(i) * 2

Next i

For i = 1 To 30 Print " 第 "; i; " 天 "; Tab(8), n(i) s = s + n(i) Next i

Page 60: 全國技藝競賽

S93-6期末領回 n = InputBox(" 輸入年利率 ")

k = InputBox(" 輸入年數“ )

s = 0 : i = 1

While i <= Val(k)

For j = 1 To 12

s = s + 10000

s = s * (1 + n / 12)

Next j

i = i + 1

Wend

s = Int(s * 10 + 0.5) / 10Print " 本利和 "; s; " 元 "

Page 61: 全國技藝競賽

S95-1 ISBN檢測‘檢查是否為 0~9 數字If Mid(str1, i, 1) >= "0" And Mid(str1, i, 1) <= "9" Then

str2 = str2 & Mid(str1, i, 1) & ","

End If

‘處理最後一個字為 X情況 If Microsoft.VisualBasic.Right(str1, 1) = "X" Then s0(9) = 10

Page 62: 全國技藝競賽

• ‘處理二層累加• Dim s1(9) As Integer

• s1(0) = Val(s0(0))

• For i As Integer = 1 To 9

• s1(i) = s1(i - 1) + Val(s0(i))

• Next

• Dim s2(9) As Integer

• s2(0) = s1(0)

• For i As Integer = 1 To 9

• s2(i) = s2(i - 1) + s1(i)

• Next

Page 63: 全國技藝競賽

排序題型

• s96-7 ( 排序 16%) 20

• s94-7 ( 基數排序, 17 分 ) 20

• s95-5 (密碼分析 15%) 20

Page 64: 全國技藝競賽

S96-7交換幾次?• Dim swapN As Integer = 0• For k As Integer = 1 To lineArray(i) - 1• For j As Integer = 0 To (lineArray(i) - 1) - 1• If columnArray(j) > columnArray(j + 1) Then• Dim tem = columnArray(j)• columnArray(j) = columnArray(j + 1)• columnArray(j + 1) = tem• swapN = swapN + 1• End If• Next j• Next k

Page 65: 全國技藝競賽

S95-5密碼分析 Dim i As Integer

• For i = 1 To Len(str1)• n(Asc(Mid(str1, i, 1))) = n(Asc(Mid(str1, i, 1))) + 1• Next• For i = 0 To 25• n(65 + i) = n(65 + i) + n(97 + i)• a(65 + i) = Chr(65 + i)• Next

Page 66: 全國技藝競賽

• ‘ 排序• Dim j As Integer

• For i = 65 To 65 + 25 - 1

• For j = i + 1 To 65 + 25

• If n(i) < n(j) Or (n(i) = n(j) And a(i) > a(j)) Then

• tem1 = n(i)

• n(i) = n(j)

• n(j) = tem1

• tem2 = a(i)

• a(i) = a(j)

• a(j) = tem2

• End If

• Next

• Next

Page 67: 全國技藝競賽

機率統計題型• s94-2 (購買花朵 10 分 ) 20

• s96-5 (最小距離 14%) 20

• s94-4 (最小離差 16 分 ) 20

• s94-6 ( 相關係數, 18 分 ) 20

• s96-3 (積木方塊 13%) 20

• s96-6 ( 排列組合 17%) 20

• s93-2 ( 模擬不公平骰子 ) 20

Page 68: 全國技藝競賽

S94-2購買不同價格花朵

q50 = 0

If n >= 50 Then

q50 = 1

n = n - 50

End If

q10 = 0

While n >= 10 q10 = q10 + 1 n = n - 10 Wend q5 = 0 If n >= 5 Then q5 = 1 n = n - 5 End If q1 = n

Page 69: 全國技藝競賽

S96-5 相鄰二數最小距離Dim minD As Integer = Math.Abs(columnArray(0) - columnArray(1))

For j As Integer = 1 To lineArray(i) - 1 - 1

If Math.Abs(columnArray(j) - columnArray(j + 1)) < minD Then

minD = Math.Abs(columnArray(j) - columnArray(j + 1))

End if Next j

Page 70: 全國技藝競賽

S94-4最小離差• For i = 1 To n - 1

• For j = i + 1 To n

• If a(i) > a(j) Then

• tem = a(i)

• a(i) = a(j)

• a(j) = tem

• End If

• Next j

• Next i

Page 71: 全國技藝競賽

• For i = 1 To n / 2

• s1 = a(i) + a(n + 1 - i) & "=" & a(i) & "+" & a(n + 1 - i)

• s2 &= s1

• Next i

Page 72: 全國技藝競賽

S94-6 相關係數For i = 1 To n

Input #1, x(i), y(i)

Next i

For i = 1 To n

SumX = SumX + x(i)

Next i

xa = SumX / n

For i = 1 To n

SumY = SumY + y(i)

Next i

ya = SumY / n

For i = 1 To n up = up + (x(i) - xa) * (y(i) - ya) down1 = down1 + (x(i) - xa) ^ 2 down2 = down2 + (y(i) - ya) ^ 2Next i

r = up / ((down1 ^ 0.5) * (down2 ^ 0.5))

Page 73: 全國技藝競賽

S96-3積木方塊• Dim sum As Integer = 0

• For j As Integer = 0 To lineArray(i) - 1

• sum = sum + columnArray(j)

• Next j

• Dim avg As Integer = sum / lineArray(i)

• Dim sumD As Integer = 0

• For j As Integer = 0 To lineArray(i) - 1

• sumD = sumD + Math.Abs(columnArray(j) - avg)

• Next j

Page 74: 全國技藝競賽

S93-2 模擬不公平骰子 v = Rnd()

Select Case v ' 判斷 v 的值。 Case Is <= 1 / 63 ' 值在 0 到

1/63 之間。 n(1) = n(1) + 1

Print "1";

Case 1 / 63 To 3 / 63 ' 值在 1/63 到 3/63 之間。

n(2) = n(2) + 1

Print "2";

Case 3 / 63 To 7 / 63 ' 值在 3/63 到 7/63 之間。

n(3) = n(3) + 1

Print "3";

Case 7 / 63 To 15 / 63 ' 值在 7/63 到 15/63 之間。 n(4) = n(4) + 1 Print "4"; Case 15 / 63 To 31 / 63 ' 值在 15/63 到 31/63 之間。 n(5) = n(5) + 1 Print "5"; Case Else ' 其它數值。 n(6) = n(6) + 1 Print "6"; End Select

Page 75: 全國技藝競賽

遞迴題型• s95-8 (費氏數 10%)20

• s95-4 ( 數學遊戲 15%) 20

• s95-3 (N階層數 10%) 20

• s96-4 ( 數學遊戲 18%) 20

Page 76: 全國技藝競賽

S95-8費氏數• Function FN(ByVal n)

• If n <= 1 Then

• FN = n

• Else

• FN = FN(n - 1) + FN(n - 2)

• End If

• End Function

Page 77: 全國技藝競賽

集合資料型態題• Q97-3 (黑盒子 12%)

• S95-2 ( 過橋問題 15%)

Page 78: 全國技藝競賽

Q97-3 (黑盒子 12%)

• Dim rStr = ""• Dim aList1 As ArrayList = New ArrayList• Dim fileContents As String• fileContents =

My.Computer.FileSystem.ReadAllText(Application.StartupPath & "\Test3.txt")

• Dim row = Split(fileContents, vbNewLine)• For i = 0 To UBound(row)• Dim data = Split(row(i), " ")

Page 79: 全國技藝競賽

• If data(0) = "Insert" Then

• aList1.Add(Val(data(1)))

• End If

• If data(0) = "Inquire" Then

• aList1.Sort()

• aList1.Reverse()

• If data(1) <= aList1.Count Then

• rStr = rStr & aList1(Val(data(1)) - 1) & vbNewLine

• End If

• End If

Page 80: 全國技藝競賽

• If data(0) = "Clean" Then• aList1.Clear()• End If• If data(0) = "END" Then• Exit For• End If• Next• MsgBox(rStr)

Page 81: 全國技藝競賽

S95-2 ( 過橋問題 15%)

• Dim dlist As New ArrayList

• Dim slist As New ArrayList

Page 82: 全國技藝競賽

For i As Integer = 1 To dataN• slist.Add(Val(recArray(recIndex + i)))• Next• slist.Sort()

• :

• bridge(slist, dlist, slist.Count)

Page 83: 全國技藝競賽

• Sub bridge(ByVal slist, ByVal dlist, ByVal n)• If n = 2 Then• slist.sort()• resultStr = resultStr & slist(0) & " " & slist(1) &

vbNewLine• total = total + IIf(slist(0) > slist(1), slist(0), slist(1))• dlist.Add(slist(0))• dlist.Add(slist(1))• slist.Remove(slist(1))• slist.Remove(slist(0))

Page 84: 全國技藝競賽

• Else• slist.Sort()• If n = 3 And (slist(2) - slist(1)) > (slist(1) - slist(0)) Then• slist.Reverse()• resultStr = resultStr & slist(1) & " " & slist(0) & vbNewLine• Else• resultStr = resultStr & slist(0) & " " & slist(1) & vbNewLine• End If•

Page 85: 全國技藝競賽

• total = total + IIf(slist(0) > slist(1), slist(0), slist(1))• dlist.Add(slist(0))• dlist.Add(slist(1))• slist.Remove(slist(1))• slist.Remove(slist(0))• dlist.Sort()• resultStr = resultStr & dlist(0) & vbNewLine•

Page 86: 全國技藝競賽

• total = total + dlist(0)

• slist.Add(dlist(0))

• dlist.Remove(dlist(0))

• bridge(slist, dlist, n - 1)

• End If

Page 87: 全國技藝競賽

其他題型

• s94-3 (連分數 13 分 ) 20

• s95-7 (英文造句 15%) 20

• s93-4 ( 數量不同盤子裝箱 ) 20

• s93-1 (2 位數乘法 ) 20

Page 88: 全國技藝競賽

S95-7英文造句• Sub senten(ByRef InArray)• Dim temStr As String• Dim 主詞 () = {"I", "He", "She", "They", "Mary", "John"}• Dim 主詞第三人稱單數 () = {"He", "She", "Mary", "John"}• Dim 及物動詞 () = {"love", "like", "see", "find"}• Dim 受詞 () = {"me", "him", "her", "them", "Mary", "John"}• Dim 反身代名詞 () = {"myself", "himself", "herself", "themselves", "herself",

"himself"}• For i As Integer = 0 To 2• Dim f1 As Integer = Array.IndexOf(受詞 , InArray(i))• If f1 >= 0 Then• temStr = InArray(i)• InArray(i) = InArray(2)• InArray(2) = temStr• End If

Page 89: 全國技藝競賽

• Dim f2 As Integer = Array.IndexOf( 及物動詞 , InArray(i))

• If f2 >= 0 Then

• temStr = InArray(i)

• InArray(i) = InArray(1)

• InArray(1) = temStr

• End If

• Next i

• If Array.IndexOf(受詞 , InArray(2)) = Array.IndexOf(主詞 , InArray(0)) Then InArray(2) = 反身代名詞 (Array.IndexOf(受詞 , InArray(2)))

• If Array.IndexOf(主詞第三人稱單數 , InArray(0)) >= 0 Then InArray(1) = InArray(1) & "s"

• End Sub

Page 90: 全國技藝競賽

S93-4 數量不同盤子裝箱• Dim b(10, 2) As Integer

• For i = 1 To 9

• b(i, 1) = 2 ^ (i - 1)

• Next i

• b(10, 1) = 489

Page 91: 全國技藝競賽

• n = 717• ns = n• For i = 10 To 1 Step -1• If n >= b(i, 1) Then• b(i, 2) = b(i, 2) + 1• n = n - b(i, 1)• End If• Next i• •

Page 92: 全國技藝競賽

• For i = 10 To 1 Step -1

• If b(i, 2) <> 0 Then

• Print "("; i; ")"; b(i, 1)

• End If

• Next i

Page 93: 全國技藝競賽

考前猜題• 考古題• 迷宮• 邏輯推理題• 排列組合• 最短路徑• 模擬• 河內塔• Big(O)

• 一維、二維表格轉換• 數獨 ( 出題、解答、錯誤查核 )

• 樂透 (號碼模擬、簽牌模擬 )

• 矩陣 ( 加、減、乘 )

• 大數 ( 加、減、乘、除 )

• 集合資料處理• 約瑟夫求救

Page 94: 全國技藝競賽

考前猜題 II

• 方程式求解• 日期資料型態題• 稀疏矩陣• 魔術矩陣• 多項式相加• 薄餅排序

Page 95: 全國技藝競賽

新的評分標準?

• 執行程式較快• 程式較簡潔• Big(O)?

– O(nLogN) => 30– O(N*N) => 20–窮舉 => 10

Page 96: 全國技藝競賽

新的比賽模式?

Page 97: 全國技藝競賽

請指教!