2010年2月26日 星期五

2010/02/26 奇數階魔方陣

Problem Description


所謂的 n階魔方陣,就是把1到n 的這n 個 連續的正 整數填到一個 n×n的方陣中,使得每一列的和、每一行的和、以及兩個對角線的和都相等。請設計一個程式可以完成n為奇數的魔方陣。

Input

n (奇數)

Output

奇數階魔方陣
Sample Input

請輸入 n: 5
Sample Output

17 , 24 , 1 , 8 , 15
23 , 5 , 7 , 14 , 16
4 , 6 , 13 , 20 , 22
10 , 12 , 19 , 21 , 3
11 , 18 , 25 , 2 , 9

2010/02/25 二元搜尋樹 -前序(難題未解)

由使用者輸入 N筆資料,建立一個Binary Search Tree(二元搜尋樹),再以preorder的方式將資料列印出來 。


Input

N

Output

preorder的順序列印出來的資料

Sample Input
7
4
1
5
12
8
13
11

Sample Output

7
4
1
5
12
8
11
13

2010年2月25日 星期四

2010/02/22 學生成績的排名次

說明:請寫一個程式,老師可以輸入全班的「程式設計」成績,並依總分來排名次,學生人數不超過50人。
輸入格式:依學號輸入學科「程式設計」的成績1-50比。 學號與成績已1個空白隔開
輸出格式:輸入之資料排名表,依學號的順序輸出,同分者名次必須相同,第二行起為學生學號、成績與名次,各以七個空白隔開。
輸入範例:
1 56
2 88
3 44
4 44
5 22

輸出:
學號   程式設計   名次
1           56             2
2           88             1
3           44             3
4           44             3

2010年2月23日 星期二

2010/02/23整數分割方式(難題未解)

對於一個正整數N而言,他的一個分割,就是N寫成若干個整數的和,但不計較書寫的順序。
請寫一個程式,輸入N 把N 所有分割列出來
輸入
N=7
輸出
6 1
5 2
5 1 1
4 3
4 2 1
 4 1 1 1
3 2 2
32 1 1
3 1 1 1 1
2 1 1 1 1 1
1111111

2010年2月18日 星期四

2010/02/17 括號配對

從"in.txt"中輸入一個包含小括號()及中括號﹝﹞的字串。當字串符合下列條件時我們稱他為正確的運算式:
1.該字串為空字串。
2.如果A為正確的運算式,則(A)及﹝A﹞都為正確的運算式。
3.如果A和B都為正確的運算式,則AB也為正確的運算式。
4.字串最大長度為128個字元
5.輸入檔案的第一列為正整數n,代表接下來有n列的待測資料。
6.檢查每列待測資料,如果正確輸出Yes,否則輸出No。

輸入範例:

(﹝﹞)
((﹝()﹞)))
(﹝()﹝﹞()﹞)()
輸出範例:
Yes
No
Yes

2010/02/16 時針和分針的夾角

在一般的時鐘上通常有兩根指針:時針、分針。請從"in.txt"讀取時間,回應此十分針和時針的夾角。(所有角度接取最小度數 Ex:9:00是90度,不是-90度也不是270度)
時間格式:   H:M
1 <=H<=12
00<=M<=59
0:00代表輸入結束
輸入範例:
12:00
9:00
8:10
0:00
輸出範例:
0.000
90.000
175.000

2010年2月15日 星期一

2010/02/15 自動販賣機

自動販賣機的物品價格為10-25元,銅板種類1,5,10,50四種,讀取"in.txt"物品價格,計算可能的投幣方式與需找回的零錢。
輸入範例:

11
輸出範例:

1*11=11 找0元
1*6+5*1=11 找0元
1*1+5*2=11 找0元
5*3=15 找4元
1*1+10*1=11 找0元
5*1+10*1=15 找4元
10*2=20 找9元
50*1=50 找39元
出自 程式設計隊訓練教材

2010年2月12日 星期五

2010/02/12 龜兔賽跑

「99年烏龜和兔子盃有一跑步大賽」開始了!這次還是有好多烏龜和兔子的朋友來參加,今年的大賽和往年相同,路程全長一公里,每次由烏龜組和兔子組各推派一個選手參加比賽,在槍聲響起後就可以自由地跑,先到達終點者獲勝。因為是友誼賽,所以只要再同意分鐘到達者,就算平手。
輸入檔說明:輸入資料有超過1組的比賽數據,每組3行資料,資料的第1行是一個整數n,範圍從0到20。當n大於0時,代表資料結束。每組資料的第2行有n個整數,由空白分開,範圍從-1000到1000,第i個整數代表烏龜組選手在第i分鐘裡所跑的距離,單位是公尺,如果為正數就是代表往前跑,負數就是往回跑。第3行和第2行相同,不過代表的是兔子組選手的資料。注意::當有任何一方已到達終點時,後面資料應該被忽略。
輸出檔說明:每1組比賽數據應有1組輸出結果,每1組輸出結果應該只有1行字串,代表這一組比賽是誰獲勝(跑的距離先等於或大於1000),烏龜組獲聖則輸出Turtle,兔子組就是Rabbit,平手的話就輸出Same,如果資料結束時比賽還未結束(雙方都還沒到達終點),就輸出Unknow。

輸入範例:
4
200 400 600 600
400 -200 800 -200
6
200 200 200 200 200 200
300 300 0 0 300 300
2
100 100
400 -200
0
輸出範例:
Same
Turtle
Unknow

2010年2月11日 星期四

2010/02/11 數列

輸入一大於1的正整數。平方後取其最小的數字為十位數(若為0則無十位數),最大的為個位數,組成一個2位數,再將此數平方,以上述方式再取得下一個數,直到重複才停止,請列出產生的數列,並標明重複的數。如輸入7則得下列結果:
輸入或產生的新數    平方    最小數    最大數   產生的新數
7                         49        4           9          49
49                       2401     0           4          4
4                         16        1           6         16
16                       256       2           6         26
26                       676       6           7         67
67                       4489     4           9         49
*49

※49重複則停止
輸入說明:大於1之正整數
輸出說明:依規則產生的數列,使用"*"標明重複產生之數字。

輸入範例:7

輸出範例:
7               49
49             2401
4               16
16             256
26             676
67             4489
*49           2401
           

2010年2月10日 星期三

2010/02/10 取代字串

讀入任意長度字串(最多50字元),對此字串坐下列處理動作:
   (1) 列印出字串長度(使用者輸入的部分)。
   (2) 以一個"4*號"字串取代每一個4字母單字,
   (3) 以一個"3+號"字串取代每一個3字母單字,
   (4) 以一個"5?號"字串取代每一個5字母單字,
       並列印新字串。

輸入範例:

Enernet 5-4-3原則

輸出範例:
(1):15
(2):Enernet 5-4*號-3原則
(3):Enernet 5-4-3+號原則
(4): Enernet 5?號-4-3原則

出自 VB99題  No.63

2010年2月9日 星期二

2010/02/09 聯集

讀入兩個正整數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

2010/02/08 攜帶容器裝水

現有容器容量分別為3公升、5公升、10公升、20公升以及40公升等五種,容器個數不限。輸入一欲帶回的公升數,計算出需攜帶的容器容量最小(x)、個數最少(y)與未裝滿容量最小(z),x+y+z最小之組合,若有相同者,均需要列出。
輸入格式:0~60之整數
輸出格式:(總個數):由大至小排列使用容器。

輸入範例:27
輸出範例:(3):20  5  3

出自  程式設計隊訓練教材 No.70 攜帶容器裝水

2010年2月5日 星期五

2010/02/05 天平秤重

有一天平,共有四個法碼,分別為1、3、9、27公克。請設計一程式,由"in.txt"輸入某一物品質量(1~40公克)。

輸入範例:
8公克
輸出範例:
左盤9公克,右盤1公克

2010年2月4日 星期四

2010/02/04 方塊積木

3歲的小明喜歡玩他的方塊積木,他總是把方塊疊在一起,型成高度不一的方塊堆。然後他說:這是一面牆。五歲的妹妹小每聽到了就跟小明說:真正的牆高度應該要一樣才行。小明聽了覺得有道理,於是決定要搬動一些方塊使所有方塊堆的高度一樣。如下圖。由於小明是個懶惰的小孩,他想要搬動最小數目的方塊,以達成這個目的,你能幫助他嗎? (輸入規範:每組資料有兩列 第一列有一個數字N,代表有幾堆方塊,第二列有n個數字,分別代表這N堆方塊的高度H。另1<=n<=50、1<=H<=100。方塊的總數一定可以整除堆數N,也就是說,一定可以使所有方塊同高度。)
           ▉
           ▉
▉     ▉▉  
▉   ▉ ▉▉ →▉▉▉▉▉▉
▉   ▉ ▉▉  ▉▉▉▉▉▉
▉▉▉ ▉▉  ▉▉▉▉▉▉
▉▉▉▉▉▉  ▉▉▉▉▉▉

輸入範例:

5 2 4 1 7 5
輸出範例:

2010年2月3日 星期三

2010/02/03 進位判斷

在小學時我們都做過加法的運算,就是把2個整數向右靠齊。然後由右至左一位一位相加。因為如果相加的結果大於等於10就有進位(carry)出現。你的任務就是要判斷兩個整數相加時,產生了幾次進位的情況。

輸入範例:
555 555
輸出範例:
3

2010年2月2日 星期二

2010/02/02 字串重組

請輸入兩組字串,每組長度為八個字元。請注意,字串必須是由A、B、C、D、E、F、G、H這些英文字母所組合的,且每個英文字母再一個字串中限制只能出現一次。請設計一個城市,利用這兩組輸入的字串,組合另一個新的字串輸出。組合的法則為:新字串的前三個字元是從第一組輸入字串的前三個字元而來,後五個字原則是由第二組輸入字串從頭依序遞補上來的。遞補的條件為:遞補的字元必須跟第一組的前三個字元不同。

輸入範例:
ABCDEFGH  EHADBCGF
輸出範例:
ABCEHDGF

2010年2月1日 星期一

2010/02/01 授權碼檢查

Nanosoft資訊軟體公司研發出一套商用軟體,準備於市面上販售,但唯恐遭到未經授權之不合法使用,因此在安裝軟體時,需要使用者輸入授權馬。試寫一個程式,其功能可以檢核此授權碼的正確信。
【規則敘述】
此授權碼由十個位數合成,每一位數可以為0~9的任何一個數字,是判斷方法如下:
首先,將此碼逐次的累加,使的第二位數成為第一位數到第二位數的和,第三位數為第一位數到第三位數的和....第十位數為第一位數到第十位數的和;
進行完第一次的累加和後 ,接著再將所得到的十個數字,第十個數字減掉第一個數字,第九個數字減掉第二個數字....以此類推,得到五組數字,將此五組數字由小到大排列後成為一個新的數列。
此新數列的後三碼為識別碼,必須可為11整除,方為正確的授權碼,故在螢幕上列印出"此為合法之授權碼",反之則印出"此為不合法之授權碼",若授權碼格式錯誤則顯示"授權碼格式錯誤"。

輸入範例:
請輸入授權碼:9476282354
輸出範例:
此為合法之授權碼

【提示】
輸入授權碼為9476282354
第一次運算後得到數列  9  13  20  26  28  36  38  41  46  50
第二次運算後得到數列  41  33  21  12  8
排序後得到數列引  812213341      (341被11整除)

出自  程式設計隊訓練教材  No.42  授權碼檢查