2011年12月29日 星期四

九九乘法


請由"in.txt"中讀取一整數N(1<=N<=9),利用迴圈配合條件指令,印出九九乘法表的前N列至"out.txt"。
※請注意垂直對齊

2011年12月26日 星期一

第一次儲備選手選拔試卷第六題

從指定目錄"in.txt"讀取一數字N,求N!的結果數值中,從右邊算來第一個不是0的數字,輸出至指定目錄"out.txt"。
( 0 < N < 10000 )

輸入範例:10

輸出範例:8

第一次儲備選手選拔試卷第五題

數字系統轉換:從指定目錄"in.txt"讀取一正整數,將它轉為16進位後輸出至指定目錄"out.txt"。
(不可使用內定含數轉換)

輸入範例:168

輸出範例:A8

第一次儲備選手選拔試卷第四題

電費計算:從指定目錄"in.txt"讀取一數字作為用電度數計算出電費,輸出至指定目錄"out.txt"。
電費算法為:電錶每月租金30元,用電在40度之內,每度2.2元,40度至100度,每度3元,超過100度,每度3.5元。

輸入範例:80

輸出範例:270

第一次儲備選手選拔試卷第三題

計算二數成績的數字個數:從指定目錄"in.txt"讀取二個四位數正整數,相乘的積,計算該數字0到9的數字個數,輸出至指定目錄"out.txt"。
如1255*2100=2635500,結果有0有2個,2有1個,3有1個,5有2個,6有1個。其他個有0個,不用顯示。

輸入範例:1255 2100

輸出範例:02 21 31 52 61

第一次儲備選手選拔試卷第二題

判斷質數:從指定目錄"in.txt"讀取一數字,判斷是否為質數輸出至指定目錄"out.txt"。
("是質數","不是質數")

輸入範例:197

輸出範例:是質數

第一次儲備選手選拔試卷第一題

找出最小數字:從指定目錄中的"in.txt",讀入一數字字串,以逗號分隔,找出字串中最小字數。

輸出到指定目錄的"out.txt"。
(讀取指定目錄的in.txt, 請用 open app.path & "\in.txt" for input as #1 )
※今後皆以指定目錄形式完成VB

輸入範例:
26,56,78,99,15,13

輸出範例:
13

2011年12月20日 星期二

菱形數字方塊

是寫一程式讀取"in.txt"之數字印出菱形數字方塊,其形狀是由一群小於該數的數字包圍而成,輸出至"out.txt"‧例如:輸入5則輸出形狀為

    1
   121
  12321
 1234321
123454321
 1234321
  12321
   121
    1
輸入2則形狀為
 1
121
 1


參照 -> http://chscvb.blogspot.com/2010/01/20100121.html

2011年11月28日 星期一

我們的一家都是人


若現在有N張牌,各張牌都不同。
選手若要改變排列順序,只能用「換牌」動作。假設一個「換牌」的動作,可以將順序中的第 1張牌(首牌)與其他牌「交換」位置,形成 1個新的牌組順序。我們現在用 1個長度為 5的字串,表示 1個牌組順序。例如以字串「12345」如果我們進行第 1次「換牌」動作,假設將「牌 1」(首牌)與「牌 5」交換,就形成新的牌組順序「52341」。如果要進行第 2次的「換牌」,就將「牌 5」(首牌)與其他牌交換,即可形成下一個牌組順序。現在給一個「目的地牌組順序」,請從牌組順序「12345」開始,,最後轉換成「目的地牌組順序」。

輸入說明:
第 1行為給定的「起始牌組順序」字串。
第 2行為給定的「目的牌組順序」字串。


輸出說明:第 1行輸出起始牌組順序「 我們的一家都是人」,最後 1行輸出「一家都是我們的人」。第 2行起依序輸出每次「換牌」後的牌組順序。



輸入檔案 1:【檔名:in.txt】
我們的一家都是人
一家都是我們的人



輸出檔案:【檔名:out.txt】

我們的一家都是人
家們的一我都是人
們家的一我都是人
都家的一我們是人
的家都一我們是人
是家都一我們的人
一家都是我們的人

2011年11月15日 星期二

摺紙

一張紙0.5cm厚

對折

1次為1cm厚
2次為2cm厚
3次為4cm厚

地球至太陽距離為1億五千萬公里
試問要折幾次才能到達。

棋盤



在棋盤中放稻子
第一格放1個,第2格放2個.....以此類推
到第64個總共有幾個 ?

2011年11月8日 星期二

99正式 Problem 5-2:


若現在有 5張撲克牌,點數分別是 1點至 5點,各張牌的點數都不同,並且 5張牌已依點數由小到大排列。選手若要改變排列順序,只能用「換牌」動作。假設一個「換牌」的動作,可以將順序中的第 1張牌(首牌)與其他牌「交換」位置,形成 1個新的牌組順序。我們現在用 1個長度為 5的字串,表示 1個牌組順序。例如以字串「12345」,表示這 5張牌現在依其點數由小到大排列。如果我們進行第 1次「換牌」動作,假設將「牌 1」(首牌)與「牌 5」交換,就形成新的牌組順序「52341」。如果要進行第 2次的「換牌」,就將「牌 5」(首牌)與其他牌交換,即可形成下一個牌組順序。現在給一個「目的地牌組順序」,請從牌組順序「12345」開始,用最多 10次的「換牌」動作,最後轉換成「目的地牌組順序」。
輸入說明:第 1行為給定的「目的地牌組順序」字串(長度為 5)。
輸出說明:第 1行輸出起始牌組順序「 12345」,最後 1行輸出「目的地牌組順序」。第 2行起依序輸出每次「換牌」後的牌組順序。



輸入檔案 1:【檔名:in1.txt】
21534




輸入檔案 2:【檔名:in2.txt】
31524




輸出檔案:【檔名:out.txt】

12345
32145
42135
52134
12534
21534


12345
52341
32541
42531
12534
21534
31524



99正式 Problem 5:特定排序方式的應用


若現在有 8張撲克牌,點數分別是 1點至 8點,各張牌的點數都不同,並且 8張牌已依點數由小到大排列。選手若要改變排列順序,只能用「插牌」動作。假設一個「插牌」的動作,可以將順序中的第 1張牌(首牌)插入其他牌的後面,形成 1個新的牌組順序。我們現在用 1個長度為 8的字串,表示 1個牌組順序。例如以字串「 12345678」,表示這 8張牌現在依其點數由小到大排列。如果我們進行第 1次「插牌」動作,假設將「牌 1」(首牌)放到「牌 5」之後,就形成新的牌組順序「23451678」。如果要進行第 2次的「插牌」,就將「牌 2」(首牌)插入其他牌之後,即可形成下一個牌組順序。現在給一個「目的地牌組順序」,請從牌組順序「12345678」開始,用最多 7次的「插牌」動作,最後轉換成「目的地牌組順序」。
輸入說明:第 1行為給定的「目的地牌組順序」字串(長度為 8)。
輸出說明:第 1行輸出「起始牌組順序」(12345678),最後 1行輸出給定的「目的地牌組順序」。第 2行起依序輸出每次「插牌」後的牌組順序。(答案並非唯一,評分時會逐行檢查正確性。)



輸入檔案 1:【檔名:in1.txt】
62518473


輸入檔案 2:【檔名:in2.txt】
42315678


輸出檔案:【檔名:out.txt】

12345678
23456718
34567218
45672183
56721843
67251843
76251843
62518473


12345678
23415678
34215678
42315678

99正式 Problem 4-2:


有一天菜攤上有 8種類型商品,包括「肉」、「菜」、「蛋」、「果」、「魚」、「蝦」、「豆」及「菇」,每種產品單項價格由輸入檔輸入。某個前來購買的客人,共有 k元預算,表示客人的總購買金額不可超過 k元。若客人對於每種類型商品只可選擇買一項或不買,在預算之內,客人共有那些購買組合?
輸入說明:第 1行是客人之預算金額 k,其值為整數,並且不超過 5000元。第 2~9行有各商品的品名及單價,中間以逗號隔開。商品單價均為整數,且不超過 200元。
輸出說明:每行輸出一種符合預算的購買組合及其支出總金額,但不輸出「都不買」的組合。輸出資料(購買的商品組合及其支出總金額)間,以至少 1個空白隔開。若購買組合包括多種商品,則商品間不限制是否有空白相隔。選手請依支出總金額由大到小依序輸出,但支出金額相同之資料,其輸出順序不限。
輸入檔案 1:【檔名:in1.txt

90
肉, 65
菜, 45
蛋, 30
果, 75
魚, 80
蝦, 95
豆, 55
菇, 60



輸入檔案 2:【檔名:in2.txt】
100
肉, 65
菜, 45
蛋, 30
果, 75
魚, 80
蝦, 95
豆, 55
菇, 60

輸出檔案:【檔名:out.txt】

蛋菇 90
蛋豆 85
魚 80
果 75
菜蛋 75
肉 65
菇 60
豆 55
菜 45
蛋 30


菜豆 100
蝦 95
肉蛋 95
蛋菇 90
蛋豆 85
魚 80
菜蛋 75
果 75
肉 65
菇 60
豆 55
菜 45
蛋 30


99正式 Problem 4:排列組合的應用


某個菜攤最多有 8種類型的商品出售。當類型齊全時,該 8種商品依序包括「肉」、「菜」、「蛋」、「果」、「魚」、「蝦」、「豆」及「菇」。假設當菜攤進了 n種類型商品,即表示菜攤進了 8種商品中的前 n種類型商品(例如:菜攤進了 3種類型商品,表示進了「肉」、「菜」及「蛋」等 3種商品。)。今將此 n類商品由左至右分類排列,但是:「肉果」、「肉豆」、「肉菇」、「菜蛋」、「菜魚」、「菜豆」、「菜菇」、「蛋果」、「蛋蝦」、「蛋菇」、「果魚」、「果豆」、「果菇」、「魚蝦」、「魚豆」、「魚菇」、「蝦豆」、「豆菇」此 18種商品組合,兩兩不可左右緊鄰放置(其間沒有擺設其他商品)。以第 1組「肉果」為例,「肉」不可放在「果」的「正左邊」或「正右邊」,而兩者之間沒有其他任何商品。在給定 n的條件下,請輸出共有那些商品排列方式。
輸入說明:第 1行的數字表示商品進貨種類 n,而 n的值介於 18之間。
輸出說明:從第 1行起每行輸出 1組符合條件的「商品排列」,每行輸出的「商品排列」間不限制是否有空白相隔,各種排列方式的輸出順序不限。最後 1行輸出總共有多少種排列方式(只輸出數字即可)。
輸入檔案 1:【檔名:in1.txt
3



輸入檔案 2:【檔名:in2.txt】
4


輸出檔案:【檔名:out.txt】

菜肉蛋
蛋肉菜
2


蛋肉菜果
果菜肉蛋
2

99正式 Problem 3-2:

請選手判斷輸入檔中的 4行文句,是否存在符合條件的「日期字串」。



在文句中,只可能包括「中文」及「半型數字」,並且不包含任何空白及標點符號。待檢查的「日期字串」格式為「民國 yyymmdd日」,其中「民國」、「年」、「月」及「日」的順序不可改變。屬於年的「 yyy」部分,合法值是「 1~999」,可存在「前置 0」,但其長度僅能是 123位數。例如民國 9年,可表現為「民國 9年」、「民國 09年」或「民國 009年」。關於月份部分,合法值是「1~12」,同樣接受「前置 0」,其長度僅能是 12位數。日期部分的範圍是「 1~31」,亦接受「前置 0」,其長度僅能是 12位數。選手應另注意,符合條件的日期值不應超過該年當月份的最大天數,例如某年某月份有 30天,則符合條件的日期值為 1~30

【註 1】西元年 = 民國年 + 1911 
【註 2】在本題限制的年份中,若其西元年「可被 400整除」或是「可被 4整除而且不被 100整除」,則當年是閏年,其 2月有 29天,否則為 28天。

輸入說明:輸入檔中的第 1~4行,表示待檢查的 4句文句,每行文句均獨立檢查,每句文句不超過 100個字。
輸出說明:依序 4行輸出,分別對應輸入檔第 1~4行文句之檢查結果。若文句中存在符合條件的「日期字串」請輸出「符合」,若不存在時請輸出「不符合」。



輸入檔案 1:【檔名:in1.txt】
他的生日是民國 89 年2 月29 日
她的生日是民國 90 月2 年29 日
民國 90 年3 月25 日是他的到職日
民國 90 年25 日3 月是她的到職日


輸入檔案 2:【檔名:in2.txt】
他的生日是民國 89 年12 月32 日
她的生日是民國 89 年12 月31 日
民國 090 年03 月02 日是他的到職日
民國 1000 年12 月31 日是她的到職日


輸出檔案:【檔名:out.txt】

符合
不符合
符合
不符合


不符合
符合
符合
不符合

99正式 Problem 3:字串特徵的判斷

此問題為給定某些文句,請選手判斷這些文句是否符合某些檢查條件?


本子題給定的文句內容只有「英文、數字、空白及標點符號」,並且「沒有」任何全型字。文句中使用的「標點符號」只包括「,」及「.2種。我們定義一個「表示式」,是一個包含若干個「表示符號」的字串。而本題的「表示符號」只包括「 #」、「*」和「$3種。其中, 1個「#」表示 1個「0~9」的數字。另, 1個「*」表示 1個大寫的英文字母,而 1個「$」表示 1個小寫的英文字母。請選手在檢查文句中,找尋是否存在符合某個給定「表示式」的子字串。例如:有個「表示式」為「###**$」,表示為「連續 3個數字,緊接著連續 2個大寫英文字,其後緊接著 1個小寫英文字」。




輸入說明:第 1行表示欲檢查的「表示式」,其長度不超過 20個字。第 2~5行表示待檢查的 4句英文文句,每行文句均獨立檢查,每句文句不超過 100個字。


輸出說明:產生 4行輸出,依序表示輸入檔第 2~5行英文文句的檢查結果。若檢查的文句中存在符合「表示式」的子字串,請輸出「符合」,否則輸出「不符合」。



輸入檔案 1:【檔名:in1.txt】
#***$$
Its password is aXYZ3KBGna.
M16A is a code of a machine gun.
Your employee number is 5AAAbb.
The serial number AQ773276UKD was printed in this case.


輸入檔案 2:【檔名:in2.txt】
*#$#
Its password is M5k3.
This serial number is 63M43Kk.
Her employee number is 8J3m75.
Those item numbers are AQ43 and KM4M.


輸出檔案:【檔名:out.txt】

符合
不符合
符合
不符合


符合
不符合
符合
不符合

99正式 Problem 2-2


子題 2.
在一張地圖上標示有 8個城市,分別稱為「城市 1」到「城市 8」。假設地圖上存在若干單行道,這些單行道直接連接 1個起點城市及 1個終點城市。我們以「二維陣列」表示地圖上的城市及單行道的關係:我們設定一個二維陣列,假設陣列名稱為 a,而 a(i, j)表示陣列中的元素,其中 ij的值介於 18之間。當 a(i, j)=1時,表示存在一條直接從「城市 i」到「城市 j」的單行道;若 a(i, j)=0,表示不存在此單行道。問題:在一個給定的陣列資料中,判斷是否存在「正好經過 3條單行道」的道路,該道路從特定的「起點城市」開始,並且在特定的「終點城市」結束。

【註 1】同一條單行道可以在求解的「3條單行道」中重覆使用。
【註 2】若選手找出的道路只使用 1條或 2條單行道,都「不能算」存在此道路。在本題中,
必須是「正好使用 3條單行道」才能算是存在此道路。 
【註 3】為了說明方便,題目中假設陣列名稱為 a,但選手撰寫程式時不限定陣列之命名。
輸入說明:第 1~8行表示城市陣列的元素,每一行分為 8個元素,以「逗號」區隔。第 i行的第 j個元素,表示 a(i, j)的值。例如:第 1行的第 1個元素,表示 a(1, 1)的值;第 1行的第 2個元素,表示 a(1, 2) 的值;第 2行的第 1個元素,表示 a(2, 1) 的值,其餘類推。第 9101112行,每行分別有 2個元素,也是以「逗號」區隔,表示選手需要檢查的 1組「起點城市」及「終點城市」編號(其值均介於 18之間)。每個檔案檢查 4組資料。
輸出說明:共輸出 4行結果,依序表示輸入檔的 4組起訖城市,是否存在「正好經過 3條單行道」的道路?有則輸出「有路徑」,沒有則輸出「沒路徑」。



輸入檔案 1:【檔名:in1.txt】
0, 1, 1, 0, 1, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 1, 1, 0
0, 1, 0, 0, 0, 1, 0, 1
0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 1, 0, 0, 0
0, 1, 0, 1, 0, 0, 0, 0
0, 0, 1, 1, 0, 0, 0, 0
1, 5
2, 3
3, 8
4, 1



輸入檔案 2:【檔名:in2.txt】
0, 0, 1, 0, 1, 0, 1, 0
0, 0, 0, 0, 1, 1, 0, 0
0, 0, 0, 0, 0, 1, 0, 1
0, 0, 0, 0, 0, 0, 1, 0
0, 0, 0, 1, 0, 1, 0, 0
0, 0, 0, 0, 0, 0, 1, 0
0, 0, 0, 0, 0, 0, 0, 1
1, 1, 0, 0, 0, 0 ,0, 0
1, 7
2, 5
3, 6
4, 7

輸出檔案:【檔名:out.txt】

有路徑
沒路徑
有路徑
沒路徑


有路徑
沒路徑
有路徑
沒路徑


99正式 Problem 2:資料表示方式的應用

子題 1. 11%)【使用路徑:c:\Problem2\子題 1\】【程式名稱p21】在圖形結構中,有一種特別的圖形,稱之為「樹狀圖」。在一個樹狀圖中,包含若干個「節點」,每個節點和它的「上一層節點」及「下一層節點」各有一個「邊」相連。每個節點有「 1個」或是「沒有」上一層節點,同時也可能有「1個」、「多個」或是「沒有」下一層節點。這些節點中,只有 1個節點沒有上一層節點,所以它是最頂層的節點,我們稱之為「樹根」。其他「非樹根」的節點,都有 1個上一層節點,我們稱這些「上一層節點」是該節點的「父親」,而自己則稱為「父親」節點的「兒子」。在樹狀圖中,有若干節點沒有任何「兒子」節點,我們稱之為「樹葉」。現在給定一個樹狀圖資料,請選手輸出所有「樹葉」節點,並輸出從「樹根」到該樹葉,最少要經過幾個「邊」。


舉例,由圖 2-1這個樹狀圖來說,「節點 a」是樹根。另外,「節點 d」、「節點 e」和「節點 g」三者是樹葉,因為它們都沒有「兒子」節點。從樹根到「節點 d」至少要經過 2個「邊」;到「節點 e」至少要經過 2個「邊」;到「節點 g」至少要經過 3個「邊」。



輸入說明:第 1行表示樹狀圖共有多少個節點(節點總數不超過 100個),第 2行起每行包括 1個節點資料。每行的節點資料包括 2個符號,以逗號隔開:第 1個符號為「節點名稱」,第 2個符號為其「父親名稱」。若是「樹根」節點,其父親表示為「---3個連續減號。
輸出說明:輸出所有「樹葉」節點,並輸出從「樹根」到該「樹葉」至少需經過的「邊」的個數。每行輸出 1組「樹葉」及「至少經過的『邊』的個數」資料,其間以空白隔開,各「樹葉」節點輸出之順序不限。
輸入檔案 1:【檔名:in1.txt

11 
A, ---
B, A
C, A
D, B
E, B
F, C
G, E
H, G
I, G
J, I
K, I



輸入檔案 2:【檔名:in2.txt】
12
A, ---
B, A
C, A
D, A
E, B
F, B
G, C
H, C
I, D
J, D
K, E
L, E

輸出檔案:【檔名:out.txt】



D 2
H 4
J 5
K 5
F 2
K 3
L 3
F 2
G 2
H 2
I 2
J 2


99正式 Problem 1-2:

本試題輸入檔為一篇中文文章,文章內容可能包括「中文」及若干「全型符號」。文章中可能使用的「全型符號」包括「,」、「。」、「;」、「、」、「!」及「?」6種。在中文中有若干文字,如「臺」與「台」,在某些時候意義相同,但在本題中,只要是字碼不同,選手都應視為「不同字」處理。請由程式讀入給定的中文文章,並作以下的統計:



子題 2. 8%)【使用路徑:c:\Problem1\子題 2\】【程式名稱p12】請選手在讀入的文章中,統計「出現次數最多」且「包含 2個中文字」的「詞」。在文章中,假設所有「兩兩相鄰的中文字」均可視為一個「詞」。本題所要統計的「詞」,只包括 2個中文字,其中不包含任何「全型符號」;我們也假設,一個「詞」不一定只出現在同一行中,也可能被切斷分隔在文章的前、後 2行。例如,有一篇文章內容為:
我們是學生。今天要上學。
在此文章中,所有包括 2個字的「詞」有:「我們」、「們是」、「是學」、「學生」、「生。」、「。今」、「今天」、「天要」、「要上」、「上學」及「學。」共 11組。雖然有些「詞」並不具明顯意義,如:「們是」、「是學」、「天要」及「要上」,但本題仍將其視為一種「詞」,並加入統計。但是「生。」、「。今」及「學。」等 3者,因為其中包括「全型符號」,則不算是「詞」,不列入統計。請選手統計並輸出出現次數最多、只包括 2個中文字的「詞」。輸入說明:第 1行表示文章的行數,第 2行開始為文章的內容。文章不超過 20行,每行不超過 50個中文字(含符號),而文章總字數不超過 1000字。
輸出說明:若統計結果只有「 1個」最多出現次數者,則以 1行輸出「出現次數最多的『詞』」及其「出現次數」。但若有「多個」最多出現次數者,則以多行輸出。每一行輸出 1個「詞」及其「出現次數」,輸出資料間以至少 1個空白隔開。
輸入檔案 1:【檔名:in1.txt
8


為達成永續發展的目標,行政院規劃六年國家重點發展計畫,由教育部規劃的永續
校園推廣計畫,為建立一個進步、安全、衛生、健康、人性化的學習環境空間為,
並於擴大內需刺激景氣的期程內,加速推行校園公共工程改造計畫,藉由突破傳統
校園封閉的環境與制式管理原則下,整合社區共同意識、建立社區風貌、拓展生態
旅遊等課題,改造校園環境成為具有社區特質的公共活動空間,結合校園綠色技術
實施應用,轉化國內相關產業技術,進而增進綠色產業推廣效益,落實擴大內需進
而促進產業升級與提振國內景氣之功效,從而發揮永續台灣、環境教育之積極意義
與促成教育改革之目的。
輸入檔案 2:【檔名:in2.txt
8

台灣地區資源短缺,興建大型水庫使用現階段推行不易,替代水源的之開發與再利用
已成為未來資源開發的之重要途徑,推動節約用水,推廣再利用的中水系統,
使全國平均之人均用水量逐步降至每日使用二百五十公升以下。落實國家水資源永
續經營之理念,水利署推動雨水利用及生活雜排水回收再使用增加替代水源使用,
並委託台灣雨水利用協會針對學界及各級學校相關人員,依各縣市所在之地理位置劃分
北中南三區各辦理一場次雨水貯集使用及生活雜排水再利用講習演討會議,將邀請國內相關
領域有豐碩成果與使用經驗之專家學者擔任主講員,對國內教育單位相關人員,以水資源
永續利用、雨水貯集利用、生活雜排水再使用及節約用水等議題進行講習與研討。
輸出檔案:【檔名:out.txt
校園 5

利用 7
使用