程式題
一、前瞻進位產生器(nand.exe)
請你寫一程式來處理筆試題題目三。
輸入:
輸入一個正整數n (0 <= n <= 6),以求出Cn。 輸出:
對於ans1與ans2兩種Cn的NAND表示法,請分別印出其完整的表示法展開為何,再印出 總共使用了幾個NAND。
範例輸入 0
範例輸出 ans1:
((A0|B0)|(A0|B0)) 3 NAND(s) used.
ans2:
((A0|B0)|(A0|B0)) 3 NAND(s) used.
二、數獨問題(sudoku.exe)
所謂的數獨就是在一個九乘九的宮格(9個三乘三宮格)裡,填入1到9等9個數字,
讓每個數字在每一行、列及所在的三乘三宮格裡都只出現一次。謎題中會預先填入若干數字,
其他宮格位則留白讓玩家自行填入,通常數獨題目都會設計成唯一解。但本題之測試輸入可 能會有多解,請你通通將其輸出。
你可以假設題目所給的數獨都是合法的,也就是不會有本身已經填好的數字不合規則的 情形存在。題目的解數不會超過10組。
輸入:
一組數獨題目,依序由上到下、由左到右給出所有格子的內容,空白的格子將用0代表,
其他數字則代表給定的格子內是什麼數字。各個數字之間將以空白隔開。
輸出:
對於題目所給的數獨題目,請輸出所有可能的解。最後請印出有幾組解。
範例輸入
1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 9 8 1 2 3 4 5 6 2 1 4 3 6 5 8 9 7 3 6 5 8 9 7 2 1 4 8 7 9 2 1 4 3 6 5 5 3 2 9 4 1 6 7 8 6 4 1 5 7 8 9 3 2 0 0 0 0 0 0 0 0 0
範例輸出
1 2 3 4 5 6 7 8 9 4 5 6 7 8 9 1 2 3 7 9 8 1 2 3 4 5 6 2 1 4 3 6 5 8 9 7 3 6 5 8 9 7 2 1 4 8 7 9 2 1 4 3 6 5 5 3 2 9 4 1 6 7 8 6 4 1 5 7 8 9 3 2 9 8 7 6 3 2 5 4 1
1 2 6 4 5 9 7 8 3 4 5 3 7 8 6 1 2 9 7 9 8 1 2 3 4 5 6 2 1 4 3 6 5 8 9 7 3 6 5 8 9 7 2 1 4 8 7 9 2 1 4 3 6 5 5 3 2 9 4 1 6 7 8 6 4 1 5 7 8 9 3 2 9 8 7 6 3 2 5 4 1
there are a total of 2 solution(s).
(每筆測試資料時間限制20秒)
三、惡猿果實(binary.exe)
大家都知道魯夫吃過橡皮果實,而一旦有人貪心吃了第二顆惡魔果實,就會被炸成碎片。
有一天魯夫吃了一顆惡猿果實,是沒有被炸成碎片,但是身體卻產生了奇妙的轉變。
他的行為開始變得非常二元,因此他走路時,第一步總是長1公尺,但每走一步路,腳 的長度就會增長為二倍,相對的步伐長度也增為二倍,也就是說,走第k步時他能走的距離
是2k-1公尺。
有一天,魯夫在他正前方d公尺發現了寶藏,其中d為奇數,但第k步他只能往寶藏的 方向或往寶藏的反方向走2k-1公尺。請幫幫魯夫得到寶藏,告訴他最快走到寶藏要走幾步,
並且應該如何走?
輸入:
一個正奇數d,1<=d<=100,000,000,代表寶藏在前方多遠。
輸出:
首先輸出至少要走幾步,再來輸出走法。走法中,”+”代表往起點到寶藏的方向走,”-”則 代表往寶藏到起點的方向走;第一個符號代表第一步(1公尺)要往哪邊走,第二個符號代 表第二步……以此類推。
範例輸入 11
範例輸出 4
+-++
(每筆測試資料時間限制2秒)
四、高精度開平方根(sqrt.exe)
給你一個正整數,求其平方根到小數點後50位,列印出結果。
注意,請不要使用sqrt()等函式,這些函式的精準度並沒有達到50位數。
輸入:
一個正整數n。(1<=n<=100,000)
輸出:
其平方根至小數點後50位,最末位四捨五入。
範例輸入 3
範例輸出
1.73205080756887729352744634150587236694280525381038
(每筆測試資料時間限制30秒)
五、旅遊規劃問題(travel.exe)
有一個旅行社想要開發一個旅遊規劃程式來幫客戶計算出其選定之觀光景點的最短交通 路徑。所有的觀光景點(不超過10個景點)可以形成一個景點圖,。
此系統可以讓客戶選擇要玩的觀光景點(最少兩個,不超過總共景點數)。其中第一個 為出發的景點,系統即自動規劃出可以走完所有指定觀光景點的最短路徑。其所規劃的路徑 可以重覆經過同一個觀景點,且可任意排列參觀的次序(起點除外)。
輸入:
首先有一個正整數n(2<=n<=10),代表總共景點數,這些景點的編號由0到n-1。接下來
有個整數m,代表有幾條邊。接下來m行,每行有3個數代表一條邊,第一、第二個數代表
這條邊連結哪兩個點,第三個數代表這條邊的長度。再這之後有一個數字k,代表想去的景 點有k個(包括起點),下一行有k個數,代表k個想去的景點的編號,其中第一個數為起 點。
輸出:
首先請輸出最短的行程總長為多少,再來請輸出依序要經過哪些景點。若有多條最佳解,
任一條都可以。
範例輸入 10 16 0 1 12 0 2 40 0 3 15 1 2 3 1 3 1 2 3 25 2 6 2 3 4 2 3 6 15 3 7 3 3 9 3 4 5 2 4 6 1 6 8 3 6 9 20 8 9 16 5
2 3 5 7 8
(範例輸入中的圖如下:)
範例輸出
Minimum travel distance: 18 Travel route: 2 6 8 6 4 5 4 3 7
(每筆測試資料時間限制10秒)
六、A 遊戲(agame.exe)
0
2
1
3 4
5
6 7
8 9
1 12
40
15 3
25 15 2
3 16
20 3
1 3
2
2
「A遊戲」是個由兩個人玩的遊戲:有一串由N個正整數所組成的數列,兩個玩者輪流 拿走一個最左邊或最右邊的數,直到最後所有的數都取完之後,兩個玩者分別把自己所取到 數加總,分數較高的人獲勝。
今假設兩個玩者都是最佳玩家──也就是說,兩者都不會犯錯,會就目前狀況盡自己的 力取得盡量多的分數──試求兩個玩家所能得到的最高分數各為多少?
輸入:
首先是一個正整數n,代表有幾個數(1<=n<=1,000)。接下來有n個正整數,代表遊戲開 始時的這列數。
輸出:
兩個數字:第一位玩家(先拿者)的分數,以及第二位玩家的分數。
範例輸入 6
4 7 2 9 5 2
範例輸出 18 11
(每筆測試資料時間限制30秒)