2012年7月31日 星期二

聯集

讀入兩個正整數a以及b,請書出介於a及b之間(包含a、b)2、3、5倍數的聯集大小。
例如1及10之堅,是2倍數集合為{2、4、6、8、10};是3倍數為{3、6、9};是5倍數集合為{5、10},上述三個集合的聯集為{2、3、4、5、6、8、9、10},故聯集大小為8。
輸入規範:輸入檔案中可能包含了好幾列的測試資料,每一列有兩個整數(即a及b)。a=0、b=0代表輸入結束。
輸出規範:對每一列輸入,輸出聯集的大小(請參考輸出範例)。

輸入範例:
1  10
10  20
0  0
輸出範例:
8
7

2012年7月30日 星期一

文數字排序

由"in.txt"讀取一串的文字或數字,將其按數字、大寫英文字母、小寫英文字母排序。

出自  程式設計隊訓練教材  NO.9 文數字排序

輸入範例:
DoYouHave1456879DollarsToBorrow
輸出範例:
1456789BDDHTYaaelloooooorrrsuvw

2012年7月29日 星期日

96模擬 Problem 2 (字串處理

Problem 2 (字串處理 10%)
輸入一段字串(String),請寫出一個程式,計算此字串中阿拉伯數的字元有幾個?

輸入說明:第一列為要計算的列數,第二列及以後就是需要計算的字串。(請參照輸入範例)
輸入範例:test2.txt

a9sj2k13ckdi7
ba429gcbgq1

輸出說明:對每一測試資料,輸出字串中阿拉伯數字的個數。(請參照輸出範例)
輸出範例:result2.txt
5
4

2012年7月28日 星期六

99模擬 Problem 5-2


子題2(8%):如果有一個正整數n,其值等於所有n 的因數(除了n 以外)之總合,則n 稱為「完美數」(Perfect number)。在此計算中,其「因數」不限制為「質因數」。請輸出2 到數字k 之間的完美數。
輸入說明:
第1 行有1 個數字,代表k 的值。而k 的值不超過50000。
輸出說明:
每行輸出1 個範圍內的完美數,依其值由小到大輸出。
輸入範例:【檔名:in-5-2.txt】
10000
輸出範例:【檔名:out-5-2.txt】
6
28
496
8128

2012年7月27日 星期五

王老先生的磨菇田

內容 :

王老先生是一位磨菇農,每天的工作就是種磨菇,然後拿去市場賣。他種磨菇種了好幾十年,也因此種出了心得,擁有了一本「磨菇經」。

他發現,種出來的磨菇不是只有單調的一種,而是有千奇百怪的外型、特徵、及味道。舉例來說吧,有些磨菇非常小隻,橘色的菌傘有鮮艷的點點,王老先生就稱它為「菇菇仔」;另外有些磨菇一樣是橘色菌傘加點點,但是大隻許多,因其可愛的外型,王老先生稱它「菇菇寶貝」,據說這種磨菇的菌傘具有養生的療效;還有一些磨菇體型和菇菇寶貝差不多,但是菌傘卻是詭異的藍色,王老先生稱它「藍菇菇」;還有一種磨菇也長得跟菇菇寶貝很像,因為某些不明原因,好像腐爛掉了卻還能存活,因為「頭」上貼著恐怖的道符,王老先生稱它「殭屍菇菇」;此外,偶爾可以找到有些磨菇長得特別大隻,比人的身高還高出許多,從高處落下還會引發地震!這種磨菇王老先生就叫它「蘑菇王」!當然,還有其它許多種不同種類的磨菇,王老先生都有為它們取名字。

然而,王老先生最近卻有了困擾,因為他的磨菇田規模越來越大,菇類生長速度也越來越快、種類也越來越多,他覺得有必要幫所有種類的磨菇統計一下數目,這樣不但好管理,也比較知道能賣多少錢。因此,他非常認真地研究各種菇類生長的速度,並且把它紀錄起來,並且為它們編號。然而,因為資訊量龐大,這種苦差事只有電腦能做到,請會寫程式的你幫幫王老先生吧!

輸入說明 :

每個測資檔僅含一筆測資。

首先會輸入多行,代表磨菇園中各種磨菇的初始值,以兩個整數S(0<=S<=100),N(0<=N<=1000000)表示,S表種類的編號,N代表該種類的起始數目,以一個 -1表結束,這裡保證相同種類的蘑菇至多出現一次。接著,會輸入過了一段時間後,會有哪些種類、哪些數目的磨菇長出來,一樣以兩個整數S2(0<=S2<=100),N2(0<=N2<=1000000)表示,S2表種類的編號,N2表增加的數目,同樣保證相同種類的蘑菇至多出現一次。以一個 -1表示輸入結束。

輸出說明 :

請依照編號由小而大輸出一段時間後該種磨菇的數目,先輸出編號,再以一個空格間格,輸出數目,如果數目為0那就不用輸出。

範例輸入 :

1 633
5 572
2 696
0 814
7 996
-1
1 299
2 482
4 239
0 390
3 29
-1

範例輸出 :

0 1204
1 932
2 1178
3 29
4 239
5 572
7 996

2012年7月26日 星期四

極大值問題


Problem2(11%)
有一個n位數的正整數A,請問刪除其中k個連續或不連續的位數 (<n)、將剩下的數字依序合併形成一個新的正整數BB的最大可能值是多少?(請注意,AB的首位都不能是0)。
輸入說明:
奇數列有兩個以空白隔開的正整數nk (1 ≤ ≤ 1000000)。偶數列會有一個長度為n的正整數A
輸出說明:
請輸出B的最大可能值。
輸入範例:
6 4
268574
5 2
41235
輸出範例:
87
435

2012年7月25日 星期三

一串數字


噢噢,有個很可愛的女生叫做小樺,她正在排骨牌,每片骨牌上都恰有一個數字。她想要選出其中的幾張骨牌,在不更動順序的情況下,找到這些骨牌所能組合的最大數。
輸入說明 :
每次輸入有多組測資,每組測資佔一行。
在每組測資中,會先有一串數字,依序代表每片骨牌上的數字,最後有一個正整數n(在int範圍以內),代表她要選出其中的幾張骨牌組合成她想要的數。
輸出說明 :
請輸出小樺所組合出的那個最大的數。

範例輸入 :
987645821 6 
123456789 8 
95655645  1

範例輸出 :
987821 
23456789 
9

提示 :
987645821
123456789
95655645

2012年7月24日 星期二

愛有等差


內容 :
子曰:「親親而仁民,仁民而愛物。」此話展現出儒家愛有等差的精神。具有懷疑精神的歷史學家S.A.S.,想要驗證古聖先賢的思考是否在現代尚能應驗。  全台灣有2500萬人左右,而每個人對其他人都有一個喜好的程度,如果這些喜好程度可以排成一等差數列,那我們就說愛有等差。S.A.S.決定隨便抓幾個路人來實驗是否愛有等差。 

輸入說明 :
輸入資料中有多組測試資料。 每一組都是由一個整數n (0<n<50001)開始,代表有幾個人。 接下來是n個數字Ki (-1000000001<Ki<1000000001),代表這位路人對n個人分別的喜好程度。如果n=0,就代表輸入結束。
輸出說明 :
如果愛有等差,就輸出Yes,不然輸出No。

範例輸入 :
4
2 3 1 4
4
2 3 1 5
0

範例輸出 :
Yes
No

2012年7月23日 星期一

產品包裝


內容 : 
某工廠生產4種正立方體產品,邊長分別為1,2,3,4公分,該工廠的包裝箱為4*4*4公分(不計算包裝箱厚度),現在有若干筆訂單,每一筆訂購單可能包括各種產品但數量可能不同,請計算每一筆訂購最少各需要多少的包裝箱。

輸入說明 :
每行是一筆訂購單,由四個整數組成,每個整數以一個空白間格,依序分別代表邊長1,2,3,4公分的產品數量,每一個數量均為不大於20000的非負整數,以一個空白隔開。

輸出說明 :
輸出各筆訂購的最少包裝箱數目,每一筆一行。

範例輸入 :
5 4 8 2 
12 14 32 7
範例輸出 :

11 
41

2012年7月22日 星期日

資料表示方式的應用(99模擬) -2

子題2(12%):在圖形結構中,有一種特別的圖形,稱之為「樹狀圖」(Tree)。在一個樹狀圖中,包含若干個「節」,每個節點和它的「上一層節點」及「下一層節點」相連。每個節點有「1 個」或是「沒有」上一層節點;也可能有「1個 」、多個」或是「沒有」下一層節點。這些節點中,只有1 個節點沒有上一層節點,所以它是最頂層的節點,我們稱之為「樹根」;其他「非樹根」的節點,都有1 個上一層節點,我們稱這些「上一層節點」是該節點的「父親」。現在給定一個樹狀圖資料,並給一個「目的地」節點名稱,請選手輸出從「樹根」連接到目的地經過的所有節點。輸出資料的順序,應從「樹根」開始,一層一層向下,最後到達「目的地」節點依序輸出,輸出的節點不能重覆。

輸入說明:第1 行表示共有多少個節點;第2 行是目的地節點;第3 行起是所有節點資料,每行有一組符號以逗號隔開,第1 個符號為「節點名稱」,第2 個符號為其「父親名稱」。若是「樹根」節點,其父親表示為「---」3 個連續減號。

輸出說明:列出從「樹根」連接到目的地經過的所有節點(包括樹根與目的地節點),而輸出的節點間至少以1 個空白相隔開。
輸入範例:【檔名:in-2-2.txt】
11
K
A,---
B,A
C,A
D,B
E,B
F,C
G,E
H,G
I,G
J,I
K,I
輸出範例:【檔名:out-2-2.txt】
A B E G I K

2012年7月21日 星期六

資料表示方式的應用


子題1(12%):在一張地圖上標示有若干個城市,及一些可雙向通行的道路。這些道路的頭、尾,各連接一個不同的城市。我們用1 個一維整數陣列(假設稱為a 陣列),存放各個城市連接的道路數目(存放順序不限)。為了判斷陣列中存放的道路數目值,是否可以正確的表達某一張地圖上城市及道路的關係,我們利用以下步驟檢查(假設陣列的指標由1 開始):
步驟1:我們將陣列由大到小排序,令排序後的陣列為b 陣列。
步驟2:假設b(1) = k,我們將b(2)到b(k +1)共k 個元素,每個元素值都減1。
步驟3:我們將b(1)從b 陣列中移除,得一個「新陣列」。
步驟4:如果「新陣列」中,存在任何一個小於0 的元素值,原始a 陣列就是「不正確」陣列;如果「新陣列」中的所有元素均等於0,原始a 陣列就是「正確」陣列。若在此步驟達成判斷,檢查即可結束。
步驟5:在不能判斷正確與否時,將「新陣列」代入步驟1,重覆上述檢查,直到達成判斷條件為止。
輸入說明:
第1~4 行表示將判斷之4 組陣列值,各元素間以逗號區隔,每組陣列最多有10 個元素。輸入檔之元素值,不會造成選手進行「步驟2」時產生「陣列索引值超出範圍」的錯誤。
輸出說明:
第1~4 行分別輸出第1~4 組陣列的正確與否。當正確輸出「正確」,不正確時輸出「不正確」。

輸入範例:【檔名:in-2-1.txt】
1,1,2,5,3,2
4,3,1,1,1
4,4,4,3,3
3,3,3,3,3

輸出範例:【檔名:out-2-1.txt】
正確
不正確
正確
不正確

2012年7月20日 星期五

傳統數學問題的解決(99模擬) -1

子題1:給定若干個數字,將它們依序排成一個頭、尾相接的環形。如果我們從某一數字開始點名,每次點名後再往後跳2 個數字繼續點名(中間間隔1 個未被點名的數字)。已經被點到名的數字不可再點,直到剩下最後一個「未點名」的數字時才停止。請問最後的數字為何?

輸入說明:
第1 行依序給定最多20 個要點名的數字,各數字之間以逗號隔開。
第2 行有1 個數字,是「開始點名」的數字。

輸出說明:
第1 行輸出最後一個未點名的數字。

輸入範例:【檔名:in-5-1.txt】
5, 3, 7, 11, 4, 2, 1, 8, 9
8

輸出範例:【檔名:out-5-1.txt】
9

2012年7月19日 星期四

文章的字母統計及單字的分離(99模擬) -1


Problem 1:文章的字母統計及單字的分離
選手請由輸入檔讀入一篇英文文章(文章內容包括「大、小寫英文」、「空白」及「標點符號」, 沒有任何「全型」字母或符號),並作以下的統計:
子題19%): 若不區別英文字母大小寫,請統計26 個英文字母A~Z在文章中出現的次數?
(只統計英文字母,其他如空白、標點符號等皆不統計。)


輸入說明:
1 行表示文章的行數(行數至多10 行,每行最多120 個字),第2 行開始為文章的內容。

輸出說明:
1 行分別列出字母ABCDE 及其統計次數,第2 行列出字母FGHIJ 及其統計次數,每行輸出5 個字母及統計,以此類推;但最後一行只列出字母Z 及其統計次數。英文字母以「大寫」輸出,每個字母及其統計次數印在1 組小括號中,並由逗號分隔。

輸入範例:【檔名:in-1-1.txt
4
Just ask a Chinese fruit farmer who now has to pay people to pollinate apple trees because there are no
longer enough bees to do the job. And it's not just the number of bees that are rapidly dwindling. As a
direct result of human activity, species are becoming extinct at a rate 1,000 times greater than the natural
average.

輸出範例:【檔名:out-1-1.txt
(A, 27) (B, 6) (C, 7) (D, 6) (E, 38)
(F, 4) (G, 6) (H, 11) (I, 14) (J, 3)
(K, 1) (L, 9) (M, 5) (N, 16) (O, 16)
(P, 8) (Q, 0) (R, 18) (S, 15) (T, 28)
(U, 9) (V, 2) (W, 3) (X, 1) (Y, 3)
(Z, 0)

2012年7月18日 星期三

海藻(algae)

內容 :
根據最新的生態學研究報導,在台北市植物園的蓮花池中,發現了一種奇特的海藻,此種海藻的外形具有一種十 分特殊的性質:

種子落地後,經過一天的時間,會先長出一根長一公分的綠色分枝。
綠色的分枝,經過一天的時間後,會向上成長一公分,並且變成黃色。
黃色的分枝,經過一天的時間後,會向上成長一公分,並且分成左右兩個分枝,其中左分枝為綠色,右分枝為黃色。
所有的分枝都不會互相交錯,同時恰好成長在同一個平面上。

舉例來說,若我們由左而右俯視觀察此海藻每天的生長情形,則在種子落地後的第一天,觀察結果為『綠』,第 二天的觀察結果為『黃』,第三天的觀察結果為『綠黃』,第四天的觀察結果為『黃綠黃』, 第五天的觀察結果為『綠黃黃綠黃』,依此類推。

請寫一個程式,預測在第 N 天時,由左邊數來第 K 個分枝的顏色為何。
輸入說明 :
每個測資點中的第一行有一個正整數 M 代表此測資點中共有 M 組測試資料

每組測試資料含有兩個以空白相間隔的正整數,分別依次為 N 與 K

為方便起見,所有的測試資料皆滿足 0 < M < 100,0 < N < 100 且 0 < K < 2000000000

輸出說明 :
每行輸出第 N 天時

由左邊數來第 K 個分枝的顏色(請用數字 0 代表綠色,1 代表黃色)

若第 N 天時,此海藻的分枝數少於 K,則輸出 -1

範例輸入 :


3 1 
5 5 
6 100 
範例輸出 :



-1

2012年7月17日 星期二

子字串特徵的判斷-2

子題2(10%):是否文句中存在任何子字串,其為「合理」的「台北市」、「台中市」或「高雄市」身份證字號。
註:
(1) 身份證字號第1 碼為地區碼,「台北市」以「A」開頭、「台中市」以「B」開頭、「高雄市」以「E」開頭。

(2) 身份證字號的第2 碼為「性別」碼,其值應為「1」或「2」。
(3) 若將身份證字號的「地區碼」改為2 碼數字,其中「A」改為「10」、「B」改為「11」、「E」改為「14」,其後併入原身份證後9 碼數字,成為1 個新的11 位數字碼。將此數字碼由左至右分別乘以「1、9、8、7、6、5、4、3、2、1、1」,其相乘後的總和應可被10 整除。

輸入說明:
第1~3 行表示欲檢查之文句。
輸出說明:
若存在合理的身份證字號即輸出「有」,不存在即輸出「沒有」。
輸入範例:【檔名:in-3-2.txt】
His ID number is A120441768.
Her ID number is B272857734.
Their ID numbers are E286585485, E282467997, and E195445887.

輸出範例:【檔名:out-3-2.txt】

沒有

2012年7月16日 星期一

Lotto

內容 : 正體->简体 
為了呼應台灣電腦彩券的發行,我們再次推出跟組合有關的題目。你在買彩券的時候一定會挑你喜歡的數字吧!(雖然理論上不會增加你的中獎機率,但是你還是會 選擇你的Lucky Number)我們的問題是:假設共有49個號碼,而你必須在你的 k (k>6)個Lucky Number中挑6個號碼作為一張彩券的數字組合。例如:你的Lucky Number的集合是{1,2,3,5,8,13,21,34}以就是說 k=8 ,那麼你就有C(8,6)=28種可能的彩券組合:
[1,2,3,5,8,13], [1,2,3,5,8,21], [1,2,3,5,8,34], [1,2,3,5,13,21], ..., [3,5,8,13,21,34].

你的任務是讀入k以及Lucky Number的集合,然後輸出所有可能的組合。

輸入說明 :
每筆測試資料一行,每行的第1個整數代表 k( 6 < k < 1 3 ) 。 接下來的k個整數代表Lucky Number的集合,此集合已經按數字由小到大排好。k=0代表輸入結束。

輸出說明 :
對每一筆測試資料,輸出其所有可能的組合,每個組合一行。請注意輸出組合的順序需由小到大排列。測試資料之間請空一行。請參考Sample Output。

範例輸入 :

7 1 2 3 4 5 6 7 
8 1 2 3 5 8 13 21 34 
0
範例輸出 :

1 2 3 4 5 6 
1 2 3 4 5 7 
1 2 3 4 6 7 
1 2 3 5 6 7 
1 2 4 5 6 7 
1 3 4 5 6 7 
2 3 4 5 6 7 

1 2 3 5 8 13 
1 2 3 5 8 21 
1 2 3 5 8 34 
1 2 3 5 13 21 
1 2 3 5 13 34 
1 2 3 5 21 34 
1 2 3 8 13 21 
1 2 3 8 13 34 
1 2 3 8 21 34 
1 2 3 13 21 34 
1 2 5 8 13 21 
1 2 5 8 13 34 
1 2 5 8 21 34 
1 2 5 13 21 34 
1 2 8 13 21 34 
1 3 5 8 13 21 
1 3 5 8 13 34 
1 3 5 8 21 34 
1 3 5 13 21 34 
1 3 8 13 21 34 
1 5 8 13 21 34 
2 3 5 8 13 21 
2 3 5 8 13 34 
2 3 5 8 21 34 
2 3 5 13 21 34 
2 3 8 13 21 34 
2 5 8 13 21 34 
3 5 8 13 21 34