重新排列一段文字的字母而得到另一段文字有時候還蠻有趣的,例如重組原始文字:”WILLIAM SHAKESPEARE” 可得到重組字:”SPEAK REALISM AWHILE”。

本題請你寫一個程式讀取一部字典及數列文字,請你從字典中選出一些單字,該組單字的字母經過重新排列後可組成原始的文字,請你從字典中找出所有可能的單字組合,且勿與原始的文字相同,若不存在任何一組重組字,請不做任何輸出,甚至連一列空行也不輸出。

閱讀全文 »

有一間公司想要控管員工撥打私人電話的電話費成本,所有通話會被記錄下來,包含撥打的號碼(最多 15 位數字)、通話時間。請你寫一個程式處理通話記錄,並整理成一份報表。

國際電話號碼以兩個零開頭(00),接著一組國碼(1~3位數),最後再接著一組用戶號碼(4~10位數)。國內長途電話號碼以一個零開頭(0), 接著一組區碼(1~5位數),最後再接著一組用戶號碼(4~7位數)。每通的通話費取決於所撥打的地區與通話時間。國內短途電話號碼以任何非零數字開頭,且通話費用為零。

閱讀全文 »

馬修與比爾兩人共同擁有一堆彈珠,他們打算平分所有彈珠,但是因為每顆彈珠的價值都不一樣,所以平分所有彈珠的工作並非那麼簡單。他們為每顆彈珠分別賦予 1 ~ 6 的價碼,希望平分後兩人所擁有的彈珠總值是一樣的。

不過用這種方式並不保證一定能將所有彈珠分成等值的兩堆,例如價值 1 ~ 6 的彈珠顆數分別為:1, 0, 1, 2, 0, 0 時就無法等值平分。請你寫一個程式判斷是否存在能等值平分彈珠的方式。

Input

輸入的每一列表示一組測試資料,分別為價值 1 ~ 6 的彈珠數目,總彈珠數目不會超過 20000 顆。以六個零表示測試資料結束。

Output

每組測試資料的第一列請輸出 Collection #k:,其中 k 表示測試資料的編號,若該組資料可被平分則在第二列輸出 Can be divided.,否則請輸出 Can't be divided.

請在每組測試資料後輸出一列空行。

Sample Input

1 0 1 2 0 0
1 0 0 0 1 1
0 0 0 0 0 0

Sample Output

Collection #1:
Can't be divided.

Collection #2:
Can be divided.
 

在 SuperHiperMarket 有一個超級拍賣。每一個人每樣商品只能拿一個,也就是一台電視機,一根紅蘿蔔,一台腳踏車,但是一個人不能拿 2 台電視機。現在有一家人到超級拍賣會去。每個人可以盡可能的拿商品,只要他搬的動。我們手上有所有商品的價格及重量,我們也知道這家人每個人最多能搬的重量。請問這家人能從超級拍賣會搬到的最大價格是多少?

Input

輸入的第一列有一個整數代表以下有多少組測試資料。

每組測試資料的第一列有一個整數 $N$ ($1\leq{N}\leq{1000}$) 代表有多少種商品。接下來的 $N$ 列每列有 $2$ 個整數 $P$$W$,分別代表該項商品的價格和重量 ($1\leq{P}\leq{1000}, 1\leq{W}\leq{30}$)。再下一列有一個整數 $G$ 代表這家共有多少人,再接下來的 $G$ 列每列有一個整數 $MW$ ($1\leq{MW}\leq{30}$) 代表某個人最多能搬的重量。請參考 Sample Input。

Output

每組測試資料輸出這個家庭能搬到的最大價格是多少。

Sample Input

2
3
72 17
44 23
31 24
1
26
6
64 26
85 22
52 4
99 18
39 13
54 9
4
23
20
20
26

Sample Output

72
514

對一個正整數 n,f(n) 表示 n 以十進位表示時所有位數的和。顯而易見地,數列 n, f(n), f(f(n)), f(f(f(n))), …一直重覆下去最後會變成一個一位數的整數。這個一位數字以 g(n) 表示。

例如,若 n = 1234567892,則:

f(n) = 1+2+3+4+5+6+7+8+9+2 = 47

f(f(n)) = 4+7 = 11

f(f(f(n))) = 1+1 = 2

因此, g(1234567892) = 2。

Input

每筆測試資料一列。每列都有一個大不於 2,000,000,000 的正整數 n。當 n = 0 時代表輸入結束,不用輸出 n = 0 這筆資料。請參考 Sample Input。

Output

每筆測試資料輸出一列 g(n)。

Sample Input

2
11
47
1234567892
0

Sample Output

2
2
2
2

一個農夫種植一個長方形的果園,果園中每棵樹木的間隔皆相同。因此,樹木形成一個長方形的網格,假設樹木是整數座標,則座標的原點是在左下角,如下圖:

我們現在有一些三角形柵欄,三角形柵欄的頂點可在的座標範圍0.0至100.0,而樹木的座標範圍則在 1 至 99。上圖有兩個柵欄。

農夫要求你編寫一個程式,算出有多少樹木是包含在三角形柵欄內的。不考慮樹的大小,若樹在柵欄上,則當做樹在柵欄內。

閱讀全文 »

  • 老闆:總共 14 元。
  • 顧客:20 元給你找。
  • 老闆:不好意思,沒零錢耶。
  • 顧客:沒關係,給你一個 10 元一個 5 元,不用找了。

有時候帶足夠的零錢可以省去很多麻煩,身上最好有不同面額的現金以備不時之需,不過有時候還是會湊不出剛好的錢而必需多付一點,這種情況在不找零的販賣機也會發生。

當然,你會希望付愈少錢愈好 (最少需要付出所買物品的價錢),更進一步地,你也希望在付出最少錢的同時,儘量減少硬幣或紙鈔數量的使用。

Input

輸入的第一列有一個整數表示測試資料的組數。每組測試資料的第一列為一個整數,表示欲購買物品的價格 ($\leq{10000}$),下一列有一整數 $n$ 表示你身上硬幣或紙鈔的數量,再接下來的 $n$ 列分別為硬幣或紙鈔的面額。面額可能為任意的正整數,但不會大於 $10000$。你身上的硬幣或紙鈔的總值一定會大於等於欲購買物品的售價。

Output

請針對每組測試資料輸出兩個整數:付款的金額,與付出的硬幣或紙鈔的數量。

Sample Input

1
1400
3
500
1000
2000

Sample Output

1500 2

有兩組單字集合,請你找出最長的共同單字子序列 (the longest common subsequence of words)。

Input Specification

輸入有多組測試資料。每組資料有兩段文字,每段文字僅包含小寫的單字,並以空白字元隔開,且不會有任何標點符號。每個單字最長 30 個字元,每段文字最多有 100 個單字,並以一列 # 符號表示結束。

Output Specification

請每組測試資料輸出這兩段文字的最長子序列單字,若有多組不同的解,輸出任何一組都可以。每個單字請以空白字元隔開,最後一個單字後請輸出換行符號。

Sample Input

die einkommen der landwirte
sind fuer die abgeordneten ein buch mit sieben siegeln
um dem abzuhelfen
muessen dringend alle subventionsgesetze verbessert werden
#
die steuern auf vermoegen und einkommen
sollten nach meinung der abgeordneten
nachdruecklich erhoben werden
dazu muessen die kontrollbefugnisse der finanzbehoerden
dringend verbessert werden
#

Sample Output

die einkommen der abgeordneten muessen dringend verbessert werden