2012年9月30日 星期日

100模擬 Problem 4-1:撲克牌遊戲


小朋友常喜歡玩很多撲克牌的遊戲。撲克牌有四種花色,黑桃、紅桃、方塊、和梅花。
「同花順」為同花色五張連續數字;相同花色的「順子」。
「四條」為四張同數字的牌,外加任一單張的五張牌;
「葫蘆」為三張同數字,另兩張同數字的牌;一個「一對」和「三條」所組成的五張牌;
「順子」為五張數字連續的牌,數字各差1點的連續牌,從 A-2-3-4-5(1-2-3-4-5),到
10-J-Q-K-A(10-11-12-13-14 沒有J-Q-K-A-2) ;;
「三條」為三張同數字;
「兩對」是有兩對兩兩同數字的牌;
「一對」則是只有兩張同數字;
「雜牌」指不屬於以上任何一種組合。
五張牌依照牌面可能有多種組合,一般判斷大小的順序如下:
同花順 > 四條 > 葫蘆 > 順子 > 三條 > 兩對 > 一對 > 雜牌
同樣組合時,先比數字大小(A 最大再來是K(13)大,2 最小)再比花色。花色大小順序
為黑桃 > 紅桃 > 方塊 > 梅花
例如黑桃同花順 9,10,11,12,13 小於紅桃同花順10,11,12,13,A 但大於方塊同花順
9,10,J(11),Q(12),K(13)。葫蘆以三條的大小作判斷,也就是說2,2,10,10,10 大於8,8,9,9,9。兩對則以較大的對作判斷,同樣數字時,有黑桃的人贏。雜牌以其中最大的牌作判斷。請幫小朋友們寫個程式,判斷手上的五張牌是什麼牌。
輸入說明:
輸入資料含多組測試案例,第1 行的數字n 代表有幾筆資料要測試,而n 的值介於1 和10之間,每個案例有五張牌,每組測試案例,為小朋友手上的牌,每張牌以一個字母表示花色
(S 表黑桃,H 表紅桃,D 表方塊,C 表梅花)及一個介於1~13 之間的數字(A:1、J:11、Q:12、K:13)。
輸出說明:
按照小朋友手上的五張牌,判斷其為何種牌,結果輸出其代碼。
「同花順」為同花色五張連續數字;則輸出 123456。
「四條」為四張同數字的牌;則輸出 4。
「葫蘆」為三張同數字,另兩張同數字的牌;則輸出 32。
第 12 頁,共 13 頁
「順子」為五張數字連續的牌,其中A(1)與K(13)得相接(可以把A 看成1 或14);則輸出12345。
「三條」為三張同數字;則輸出 3。
「兩對」是有兩對兩兩同數字的牌;則輸出 22。
「一對」則是只有兩張同數字;則輸出 1。
「雜牌」指不屬於以上任何一種組合。則輸出 0。
輸入範例:【檔名:in-4-1-1.txt】
3
S3 H5 S4 D5 C5
H1 D6 C6 H12 S12
S13 D12 H10 C11 S1
輸入範例:【檔名:in-4-1-2.txt】
2
D2 H5 S2 D5 C5
D3 H5 S2 D7 C8
輸出範例:【檔名:out-4-1.txt】
3
22
12345
32
0

100模擬 Problem 3-2:漢明碼(Haming Code)


漢明碼(Haming Code)
1. 具有自動偵錯與更正錯誤一個位元的功能,兩個位元有誤只能偵測。
2. m個位元資料,須 r 個同位元查出錯誤。 m+r+1≦2^r
3. 同位元(Parity)放置位置為2^(r-1)
m:資料位元長度 r:檢查位元長度 (2^r) n:總傳送位元數 ( n= m+ r )
舉例來說,如果需要傳送7 個位元 110 0001 資料,則 m = 7,7+4+1 < =2^4,r= 4,n = 7 + 4,
檢查位元需要4 個位元。
同位元檢查,分為兩種,一種為奇同位檢查另一種為偶同位檢查,以偶同位例子來說,
0110110,已經有4 個1,所以偶同位元就填入0,資料加偶同位為01101100。接下來的計算
都用偶同位。
假設,要傳的字元為a,對應到7 個位元的ASCII 為110 0001,則其漢明碼的檢查碼分別為1011
但是要跳過為 1 2 4 8 這幾個位置,如下圖:
位置 1 2 3 4 5 6 7 8 9 10 11
P1 P2 1 P3 1 0 0 P4 0 0 1
目前檢查位元P1 P2 P3 P4 是未知的,需要透過同位元檢查來取得,如下圖:
位置 二進位數字
1 0 0 0 P1
2 0 0 P2 0
3 0 0 1 1
4 0 P3 0 0
5 0 1 0 1
6 0 0 0 0
7 0 0 0 0
8 P4 0 0 0
9 0 0 0 0
10 0 0 0 0
11 1 0 1 1
同位元檢查 1 1 0 1
要注意的是位置3、5、11 為1,所以在二進位數字那邊就要填入0011、0101、1011 其他填0000。
同位元檢查那邊以P1 那一欄來說,那一欄一共有3 個1,所以P1 需要填入1,P2P3P4 以此類
推,字元為a, ASCII 為110 0001,漢明碼P1P2P3P4 檢查碼為1011,最後所傳送的資料為
10111001001。
第 10 頁,共 13 頁
輸入說明:
第1 行的數字n 代表有幾筆字元資料要計算,接下來資料為傳送字元[a-zA-Z0-9]。
輸出說明:
輸出為字元對應的漢明碼P1P2P3P4 檢查碼。
輸入範例:【檔名:in-3-2-1.txt】
3
H
a
m
輸入範例:【檔名:in-3-2-2.txt】
2
c
e
輸出範例:【檔名:out-3-2.txt】
0010
1011
1100
1110
0010

100模擬 Problem 4-2:找零錢問題


子題 2:找零錢問題 (限制時間: 5 seconds)
目前台灣常用的銅板有50 元、10 元、5 元、1 元共四種。今天媽媽請小華去買東西換銅
板回來,且媽媽交待,要小華請老闆找零錢的數目要最少,小華帶了n 張的100 元紙幣,買
了n 項金額少於100 元東西,有n 筆數量的零錢要找給小華,請幫老闆算一算需找多少個50
元、10 元、5 元、1 元的銅板,其銅板數目最少。
輸入說明:
檔案輸入第一行為總共幾筆金額,接下來是每筆交易金額大小。
輸出說明:
請算出每筆交易金額可換回的銅板數量,依序列出50 元銅板數量,10 元銅板數量,5 元銅板
數量,1 元銅板數量。
輸入範例:【檔名:in-4-2-1.txt】
3
59
51
34
輸入範例:【檔名:in-4-2-2.txt】
2
25
10
輸出範例:【檔名:out-4-2.txt】
50,0 10,4 5,0 1,1
50,0 10,4 5,1 1,4
50,1 10,1 5,1 1,1
50,1 10,2 5,1 1,0
50,1 10,4 5,0 1,0

100模擬 Problem 3:檢查碼問題


子題1:
中華民國身分證的號碼是經由一串公式所產生出來的,目前中華民國身分證字號一共有十
碼,包括第一個大寫的英文字母與接續的九個阿拉伯數字。
(1)第一個字元代表地區,轉換方式為:A 轉換成1,0 兩個字元,B 轉換成1,1
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
10 11 12 13 14 15 16 17 34 18 19 20 21 22 35 23 24 25 26 27 28 29 32 30 31 33
(2)第二個字元代表性別,1 代表男性,2 代表女性
(3)第三個字元到第九個字元為流水號碼。
(4)第十個字元為檢查號碼。
例如:
A123456789,A 的轉換字元是1 和0,
1 0 1 2 3 4 5 6 7 8 9
n1 n2 n3 n4 n5 n6 n7 n8 n9 n10 n11
然後再把每一個數字,依序乘上 1 9 8 7 6 5 4 3 2 1 1 的加權,再相加
套入公式,其結果為
然後再除以10,130/10 如果整除(130=10(mod 0),該組身分證字號為有效。
輸入說明:
第 1 行的數字n 代表有幾筆資料要測試,而n 的值介於1 和10 之間,之後每行為身分證字
號。
輸出說明:
從第 1 行起每行輸出對應到每組身分證字號,若為有效的身分證字號則輸出1,若為無效則
輸出為0。
輸入檔案 1:【檔名:in-3-1-1.txt】
3
A123456789
A123456788
A223499999
第 8 頁,共 13 頁
輸入檔案 2:【檔名:in-3-1-2.txt】
2
A107386817
A116673574
輸出範例:【檔名:out-3-1.txt】
1
0
0
1
1

100模擬 Problem 1-2:字串的處理


子題 2:在此子題中,「邏輯表示式」除了「true」、「false」、「==」、「!=」及「空格」外,另外
有一個變數「a」。其中「a」的值可能是「true」或「false」其中之一。已知輸入檔中所有的邏
輯表示式「結果均為『真』」,請選手判斷輸入檔各表示式中「a」的值,並依序輸出至輸出檔
中。
輸入說明:
共有4 行資料,每行有1 個邏輯表示式,每行最多120 個字。
輸出說明:
共4 行,分別列出輸入檔中對應行數的邏輯表示式內「a」的值。若「a」的值為「true」,輸
出「TRUE」,反之輸出「FALSE」。(輸出均為大寫,選手請注意。)
輸入範例:【檔名:in-1-2.txt】
true==false==a==true!=false
a!=false==true!=false==true
false==true==true!=false!=true!=false==a==true
true==false==true!=false==a
輸出範例:【檔名:out-1-2.txt】
FALSE
TRUE
TRUE
FALSE

100模擬 Problem 1:字串的處理


此問題為給定由「英文」、「數字」及「特定符號」組成「邏輯表示式」,判斷此邏輯表示式的敘述是否為真?
子題1: 在此子題中,邏輯表示式的內容只包括「true」、「false」、「==」、「!=」及「空格」。
其中「true」代表邏輯運算的「真」,而「false」代表「假」;另「==」代表邏輯運算的「是否相等」,而「!=」代表「是否不相等」。已知「==」運算,在前後比較值「同為true」或「同為false」時,其結果為「true」;但若比較值「一個true、一個false」時,其結果為「false」。另知「!=」運算前後比較值「同為true」或「同為false」時,其結果為「false」;但若比較值「一個true、一個false」時,其結果為「true」。在邏輯表示式中的空白均不具運算意義,選手可忽略之。輸入檔的資料,每行代表一個邏輯表示式,請選手判斷其邏輯運算的最後結果。若最後結果為真,該相對應輸出為「TRUE」;若為假,輸出「FALSE」。輸入的字串,不存在邏輯表示式語法的錯誤,選手可不必另外檢查之。本題的邏輯運算由多個子邏輯運算組成時,其運算應由左自右逐步檢查。
輸入說明:
共有4 行資料,每行有1 個邏輯表示式,每行最多120 個字。
輸出說明:
共4 行,分別列出輸入檔對應的邏輯表示式計算結果。若最後結果為真,該相對應輸出為
「TRUE」,反之輸出「FALSE」。(輸出均為大寫,選手請注意。)
輸入範例:【檔名:in-1-1.txt】
true==false!=false
true!=true==false==true==false
false==false!=true!=true!=flase==true
false!=false==true==false==true!=false==true!=false
輸出範例:【檔名:out-1-1.txt】
FALSE
FALSE
TRUE
TRUE

2012年9月23日 星期日

100正式Problem:4-2

小朋友常喜歡玩很多撲克牌的遊戲。撲克牌有四種花色,黑桃、紅桃、方塊、和梅花。
「同花順」為同花色五張連續數字,相同花色的「順子」。
「四條」為四張同數字的牌,外加任一單張的五張牌;
「葫蘆」為三張同數字,另兩張同數字的牌;一個「一對」和「三條」所組成的五張牌;
「順子」為五張數字連續的牌,數字各差1點的連續牌,從最小 A-2-3-4-5(1-2-3-4-5),到最
最大10-J-Q-K-A(10-11-12-13-14),但不包括J-Q-K-A-2 的連續方式。
「三條」為三張同數字;
「兩對」是有兩對兩兩同數字的牌;
「一對」則是只有兩張同數字;
「雜牌」指不屬於以上任何一種組合。
五張牌依照牌面可能有多種組合,一般判斷大小的順序如下:
同花順 > 四條 > 葫蘆 > 順子 > 三條 > 兩對 > 一對 > 雜牌
同樣組合時,先比數字大小(A 最大再來是K(13)大,2 最小),再比花色。每張牌以一個字母表示花色(S 表黑桃,H 表紅桃,D 表方塊,C 表梅花)及一個介於1~13 之間的數字(A:1、J:11、Q:12、K:13)。花色大小順序為:
黑桃 > 紅桃 > 方塊 > 梅花
例如黑桃同花順 9、10、J(11)、Q(12)、K(13)小於紅桃同花順10、J(11)、Q(12)、K(13)、A,
但大於方塊同花順9、10、J(11)、Q(12)、K(13)。葫蘆以三條的大小作判斷,也就是說2、2、
10、10、10 大於8、8、9、9、9。兩對則以較大的對作判斷,同樣數字時,有黑桃的人贏。
例如:H1 D6 C6 H12 S12 大於H2 D9 C9 D12 C12,因為S12 為黑桃12。雜牌以其中最大的牌作判斷。請幫小朋友們寫個程式,判斷那個小朋友手上的五張牌,找出誰的牌最大和最小。
輸入說明:
輸入資料含多個測試案例,每個檔案 in1.txt 和in2.txt 都在各有一副牌52 張的情況下,第1行的數字n 代表有幾筆資料要測試,而n 的值介於3(含)和8(含)之間,每個案例有五張牌,每個測試案例,是其中一位小朋友手上的牌。
輸出說明:
按照小朋友手上的五張牌,在 n 個測試案例中,找出那個小朋友的牌是最大和最小,結果按照原來牌的順序輸出那二位小朋友牌是最大和最小的五張牌。每個檔案in1.txt 和in2.txt,各找出一組最大和最小的五張牌。

輸入範例:【檔名:in1.txt】
4
S3 H5 S4 D5 C5
H7 H8 H10 H9 H11
H1 D6 C6 H12 S12
D12 C12 D9 C9 S13
輸入範例:【檔名:in2.txt】
4
D2 H5 S2 D5 C5
D3 H4 S1 D7 C8
H1 S7 C7 H13 S13
C2 S3 S4 S6 S8
輸出範例:【檔名:out.txt】
H7 H8 H10 H9 H11
D12 C12 D9 C9 S13
D2 H5 S2 D5 C5
D3 H4 S1 D7 C8