2011年10月27日 星期四

11/5資訊月競賽資訊


日 期:100 年 11 月 05 日(星期六)
地 點:嶺東科技大學 昌雲樓資網中心 (台中市南屯區嶺東路 1 號)
※請各選手攜帶學生證、身份證或具相片之證件準時報到參賽,逾時以棄權論。※

序號學校名稱參賽人員座號姓名輸入法競賽教室時間
1國立彰化高商組員113周祐任新注音競賽教室21230-1330
組員215柯昱佑新注音競賽教室21230-1330
組員317鄭雅嬬新注音競賽教室21230-1330



時間
競賽程序
12:00~12:15
報到 (第一場至第三場)
12:30~13:30
創意軟體設計(第一場至第二場)
數位內容編輯(第三場)
13:00~16:00
指導老師茶敘
13:00~13:15
報到 (第四場至第七場)
13:30~14:30
數位內容編輯競賽 (第四場至第六場)
數位內容建置 (第七場)
14:00~14:15
報到 (第八場至第十一場)
14:30~15:30
數位內容簡報 (第八場至第十場)
數位內容建置 (第十一場)
15:00~15:15
報到 (第十二場至第十四場)
15:30~16:50
會計資訊與財務分析 (第十二場至第十四場)


競賽時間/教室
競賽教室
(B01教室)
競賽教室
(B03教室)
競賽教室
(B04教室)
競賽教室
(502教室)
12:30~13:30
(第一場)創意軟體設計
(VB
程式設計)
(第二場)創意軟體設計
(VB
程式設計)
(第三場)數位內容編輯
(
文書處理)








>報到處:亞萍館 1樓
>休息區:全能教育中心
>指導老師茶敘:文學數位藝術中心
>競賽教室一:資網中心 B1樓 B01教室
>競賽教室二:資網中心 B1樓 B03教室
>競賽教室三 :資網中心 B1樓 B04教室
>競賽教室四 :資網中心 B1樓 502教室
各場次選手請於競賽場次前15分鐘集合,由服務同學統一引導至各競賽教室。
請各選手攜帶學生證或身份證準時報到參賽,逾時以棄權論。

與我們有關用紅色表示

更多詳細...點我



2011年10月21日 星期五

97正式 Problem7:正多邊形的面積(14%)

Problem7:正多邊形的面積

已知圓的半徑r,和內接正多邊形的邊數n,請計算出正多邊形的面積,而圓週率設為3.14

輸入說明:

每組輸入包含兩個數字rnr ( 0 < r < 10000 ) 代表圓半徑,n ( 2 < n < 10000 )代表內接正多邊形的邊數。

輸出說明:

對於每組測試資料,輸出圓內接正多邊形的面積,請四捨五入到整數位。

輸入範例:

2 2000

10 3000

輸出範例:

13

314

97正式 Problem6:因數

Problem6因數(11%)

已知兩個整數nd,請你找出n這個值,會有多少個因數可以被d整除。

輸入說明:

每組輸入包含兩個以空白隔開的數字nd,其n ( 0 < n < 1000000 ),而d ( 2 ≤ d < 1000 )

輸出說明:

對於每組測試資料,輸出n這個值,會有多少個因數可以被d整除。

輸入範例:

36 2

64 8

輸出範例:

6

4

97正式 Problem5:兩直線間的關係

Problem5:兩直線間的關係(14%)

2維平面中兩條直線間的關係共有三種:

1. 相交於一點

2. 重疊(無限多交點)

3. 平行(沒有交點)

輸入4個點,分別代表兩條直線。請輸出這兩條直線間的關係。

輸入說明:

每組輸入包含8個以空白隔開的數字x1 y1 x2 y2 x3 y3 x4 y4,分別代表4個點 (x1, y1)(x2, y2)(x3, y3)(x4, y4)。其中第一條直線會通過 (x1, y1)(x2, y2);第二條直線會過通 (x3, y3)(x4, y4)。

輸出說明:

請輸出這兩條直線的關係,如果是相交於一點,請輸出I;如果這兩條線是重疊,請輸出L;如果這兩條線是平行,請輸出N

輸入範例:

5 0 7 6 1 0 2 3

5 0 7 6 3 -6 4 -3

2 0 2 27 1 5 18 5

輸出範例:

N

L

I

97正式 Problem3:黑盒子

Problem3黑盒子(12%)

有一個黑盒子支援 Insert, Inquire, Clean, End四種指令:

l Insert x:將x放入黑盒子中。

l Inquire k:輸出黑盒子當中第k大的數字,若找不到該數,則不輸出。

l Clean:更換另一組測試資料,清空黑盒子。

l End:結束程式。

輸入說明:

請參考範例輸入,所有數字都為整數。一組測試資料的指令數不會超過1000個。

輸出說明:

請將每一個合法的Inquire k值輸出。

輸入範例:

Insert 4

Inquire 1

Insert 1

Inquire 2

Insert -3

Insert 3

Insert 7

Insert -99

Inquire 4

Clean

Insert 3

Inquire 2

Inquire 1

END

輸出範例:

4

1

1

3

97正式 Problem4:排列最小值

Problem4:排列最小值(13%)

一串數字內有n個正整數。試著利用連接字串的方式去排列這n個正整數,使其值最小。

輸入說明:

每組輸入包含一串數字,內有n個正整數,數字與數字間以一個空白隔開。

輸出說明:

每組輸出排列後的最小正整數。

輸入範例:

1 36 3647

8 79 797 799

輸出範例:

1363647

797797998

97正式 Problem2:極大值問題

Problem2:極大值問題(11%)

有一個n位數的正整數A,請問刪除其中k個連續或不連續的位數 (k < n)、將剩下的數字依序合併形成一個新的正整數BB的最大可能值是多少?(請注意,AB的首位都不能是0)。

輸入說明:

奇數列有兩個以空白隔開的正整數nk (1 ≤ k < n ≤ 1000000)。偶數列會有一個長度為n的正整數A

輸出說明:

請輸出B的最大可能值。

輸入範例:

6 4

268574

5 2

41235

輸出範例:

87

435

97正式 Problem1:等差數列或等比數列

Problem1:等差數列或等比數列(10%)

在數列中有等差數列及等比數列,若已知數列的前四項,請判斷出此數列是等差或是等比數列,並求出公差或公比。

輸入說明

第一行是數列的數目t0 ≤ t ≤ 10)。以下每行均包含四個以空白隔開的整數,表示數列的前四項。數列的前四項均為不大於10000的自然數,等比數列的比值也是自然數。

輸出說明:

對輸入的每個數列,輸出兩個欄位,欄位與欄位之間以一個空白隔開,若是等差數列則第一欄輸出A,若為等比數列則第一欄輸出G;第二欄則根據數列的判斷結果,輸出其公差或是公比。

輸入範例:

2

2 4 6 8

2 4 8 16

輸出範例:

A 2

G 2

2011年10月19日 星期三

98資訊月歷屆

https://docs.google.com/viewer?a=v&pid=explorer&chrome=true&srcid=0B1V3ZunitSjANjU0YmRjYWItMDhjOS00YWE2LWJiMGItYjlkMmU4Yjk1ZWIx&hl=zh_TW



98年表單檔:
需特定帳號方可見得。


https://docs.google.com/viewer?a=v&pid=explorer&chrome=true&srcid=0B1V3ZunitSjAMTk1NTZjZDgtNmFhYy00YzBjLTkwNWEtMWJmZTVmM2JiZDZm&hl=zh_TW

97模擬 Problem 7 (奧步戰術

在黑暗算法界中,使用奧步解題似乎已經漸漸成為主流。雖然使用奧步將漸漸使人走向魔路,最後被內心的虛無吞噬,不過這不是今天的問題。考慮在某個考試中,有n 道題目,而總答題時間為T。對於每題都只有三種可能:

1. 正解能得到全對的分數(得2 分)
2. 奧步能拿到半對(得1 分)
3. 放棄的話當然就沒分囉(0 分)

而對每題來說,要達到這三種分數所需花的時間皆不同,所有題目拿0 分都不用花費時間;在題目i 使用奧步拿半對所需時間為Hi,要寫正解所需時間為Ci ,其中對於任何題目i,必有滿足0。試問:在時間T 內,用最佳的答題方式,最多可以拿幾分?

輸入說明:
輸入檔第一行說明有幾組測試資料,第二行有兩個整數n T,分別代表有幾題,以及總作答時間。接下來n 行每行有兩個整數Ci Hi,代表第i 題寫正解需要時間Ci,寫奧步需要時間Hi。其中:
  • 題目總數n100000
  • 答題所需時間1HiCi1000000
  • 總作答時間0<, T1000000000

輸出說明:
每個測試範例請輸出一個整數,代表最大得分。

輸入範例:
2
5 12
4 3
6 2
5 3
4 3
5 2
4 10
5 3
6 5
3 1
4 3
輸出範例:
6
5

97模擬 Problem 6 (中文大寫數字

我們在金融機構填寫金額時使用的不是阿拉伯數字,而是中文的大寫數字。請寫一個程式將數字轉換為中文大寫數字。

標準大寫寫法如下:零、壹、貳、參、肆、伍、陸、柒、捌、玖、拾、佰、仟、萬、億

輸入說明:
整數數字n (0 ≤ n ≤ 2147483647)。

輸出說明:
文字字串,遇到10 時,請輸出『壹拾』。

輸入範例:
12345
10200

輸出範例:
壹萬貳仟參佰肆拾伍
壹萬零貳佰

97模擬 Problem 5 (糊塗情報員

有一位間諜,依他所屬情報單位要求編碼的方式,將他所收集到情報全部編成數字碼。但他認為這樣還是不夠安全,因此他再將這些數字字串,隨意切割成好幾個整數,然後將每個整數用一個數學算式來表示。這些算式只用了加、減、乘三種運算子,而且每個運算元都是正整數。最後,他為了讓他自己更為心安,他將整個密碼分成兩本密碼簿儲存。密碼本A 存放這些數學算式,但他將算式內的所有括號全部拿掉,然後再將這些拿掉的括號資訊記錄在密碼本B 裡面。
過了不久,這個間諜發現他把密碼本B 弄丟了,再加上他的記憶力不好,很多情報內容根本記不得,所以現在沒了密碼本B 幾乎束手無策。在不得已的情況下,他的情報單位派了幾位心理與腦神經專家詢問他,希望能喚起他腦海內的記憶。這些專家試了好幾天,用盡各種辦法後,終於承認他的記憶力果真很差,怎麼也問不出情報內容。倒是心理學專家有一發現,即這位情報員在寫密碼算式時,傾向於將括號加在那些會讓算式得最大值的位置。例如5*7+2 這個算式,有兩種括法:((5*7)+2)以及(5*(7+2)),第二種括法所得的值較大。請寫一程式,算出這些算式的可能最大值。
輸入說明:
每一筆輸入資料為一行算式,運算子只有三種,即一般的加、減、乘三種二元運算子,分別以符號'+' '-' '*'表示。每一個運算元都是一個正整數( 100),運算元和運算子之間不會有空白,一行算式不會有超過50 個運算元。
輸出說明:
相對於每一輸入算式,輸出所有可能運算結果的最大值。該值都會是一個正整數,而且不會超過2147483647。
輸入範例:
5*7+2
6*3-9*3
5+2-7*2-3
  範例輸出:
45
27
14

97模擬 Problem 4 (百貨公司打折程式

豪慷慨百貨公司週年慶的打折策略,吸引了許多客人上門,因此公司決定再回饋客戶,當客戶消費超過2000 元時打7 折,消費超過5000 元時打6 折,消費超過10000 元時打55 折。請幫該公司寫出一個新的收銀台程式,輸入顧客購買總金額n 後,計算顧客實際需付的錢。

輸入說明:
購買金額n

輸出說明:
實付金額

輸入範例:
3000
6000
12000

輸出範例:
2100
3600
6600

97模擬 Problem 3 (基礎排序

給一堆數字, 把他們從小到大排序好。

輸入說明:

  每組測試資料共有兩行,第一行的數字n 為有幾個數字要排序,第二行則有n 個整數(n≤1000),其餘整數皆於-10000到10000 之間,測試資料中包含多組測試,當排序個數為0 時結束。

輸出說明:
  輸出已排序好的數列,每個數字之間請用一個空白隔開。

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

輸出範例:
1 2 3 4 5
-5 -4 -3 -2 -1

97模擬 Problem 2 (惱人的零錢

東東在買東西付帳,總是習慣直接從錢包中拿鈔票付帳,而懶得掏出硬幣來。久而久之,錢包裡面累積了許多硬幣,簡直重得不得了,所以東東終於受夠了!因此,她決定趁著今天買東西的時候,想辦法盡量減輕負擔。於是東東開始盤算要怎樣湊出足夠的硬幣,才能讓付出去的硬幣個數越多越好。同時,目前這家店的老闆人很好,不論客人給他多少硬幣,他都一定會用最少的硬幣找錢給客人。所以,當東東走到櫃台結帳時,東東想到自己如果多付一些硬幣讓老闆找錢,說不定可以讓自己的錢包更輕!因此,東東開始煩惱到底要怎麼給錢,才能夠盡量「用掉」最多的硬幣呢(所謂的「用掉」的硬幣個數,指的是拿出去的硬幣數,扣掉老闆找回來的硬幣數)?可惜的是,東東的算術一向不太靈光,因此希望你能幫忙他解決這個煩惱。

輸入說明:
  輸入資料的第一行是一個整數n,代表共有n 筆測試資料。接下來每筆測試資料有3 行:第1 行的數字C 表示要買的東西的價格。第2 行有5 個數字p1 p5 p10 p20 p50,分別是東東錢包裡面一元、五元、十元、二十元和五十元硬幣的個數。第3 行有5 個數字q1 q5 q10 q20 q50,是老闆所擁有的一元、五元、十元、二十元和五十元硬幣的個數。每筆測試資料的所有數字都在0 10000 之間;同一行的數字之間會用一個空白隔開。你可以假設東東身上的錢足夠來購買該商品,而且至少有一種付錢的方法使得老闆可以找得開(如果需要找錢的話)。因為老闆和東東很不幸地很碰巧地一張鈔票都沒有,請不要問說為什麼不能換成大鈔。

輸出說明:
  你的輸出資料應該有n 行,分別對應到n 筆輸入的測試資料。每一行要輸出一個數字表示東東付完帳之後,剩餘的硬幣總數。

輸入範例:
2
25
10 3 2 1 3
0 0 0 0 0
25
0 3 2 2 3
1 1 1 1 1

輸出範例:
6
4

97模擬 Problem 1 (字數統計

  雷迪雅被老師要求寫一份為數2000 字的報告,可是雷迪雅胸無點墨、才疏學淺,常常寫了一整個下午還不到一頁,

  因此他每寫一段時間就開始數自己已經寫了多少個字,可是常常這樣數也是會累的,於是他希望能有一個自動字數統計
程式。

  有了字數統計程式,就可以自動統計好一篇文章總共有幾行、有幾個字、有幾個字元。行被定義為用換行字元隔開的連續字元,字被定義為用空白、TAB 或換行字元所隔開的連續字元,而字元除了一般可見的字元還包括TAB 字元和空白字元(注意不包含換行字元)。
  身為雷迪雅好朋友的你,常常受到他的照顧,正所謂吃人嘴軟,拿人手短,如今雷迪雅遇到了這個難題,請你義不容辭地寫一個程式幫他吧!

輸入說明:
  輸入檔第一行說明有幾組測試資料,第二行開始即為第一筆測試資料,每行不會超過1024個字元,每組測試資料中間用五個連續等號'=' 的一行來作分隔。每組測試資料之中絕不會有五個連續等號'=' 出現。

輸出說明:
  每組測試資料輸出一行,每行有三個數字,分別代表一組測試資料中有幾行,幾個字和幾個字元,每個數字之間請用一個空白隔開。

輸入範例:
2
This is a sample input.
Hello World!!
=====
The speech by Hunyak, translated, is:
"What am I doing here?
They say, the famous Hungarian police,
that I held down my husband and chopped off his head.

But I didn't do it, I am not guilty.
I can't believe that Uncle Sam says I did it.
They say I didit, but really I didn't."


輸出範例:
2 7 36
8 55 270

99資訊月歷屆

https://docs.google.com/viewer?a=v&pid=explorer&chrome=true&srcid=0B1V3ZunitSjAZDAwZGI4YmUtZWFmNS00MTA4LTg3NWQtY2FhMDliMjcxYWVi&hl=zh_TW


>99年表單檔

2011年10月18日 星期二

96正式 Problem 7 (密碼解密

Problem 7 (密碼解密 8%)

在密碼學裡面有一種很簡單的加密方式,就是把原始資料的每個字元通通加上某一個整數K而得到密碼的字元(原始資料及密碼字元一定都在ASCII碼中可列印的範圍內)。例如若K=2,那麼apple經過加密後就變成crrng了;解密則是反過來做。
輸入說明:第一列為加密的K值,第二列為要解密的列數,第三列及以後就是需要解密的字串。(請參照輸入範例)
輸入範例:test7.txt
7
3
1JKJ'pz'{ol'{yhklthyr'vm'{ol'Jvu{yvs'Kh{h'Jvywvyh{pvu5
1PIT'pz'h'{yhklthyr'vm'{ol'Pu{lyuh{pvuhs'I|zpulzz'Thjopul'Jvywvyh{pvu5
1KLJ'pz'{ol'{yhklthyr'vm'{ol'Kpnp{hs'Lx|pwtlu{'Jvywvyh{pvu5
輸出說明:對每一測試資料,請輸出解密後的原始資料。(請參照輸出範例)
輸出範例:result7.txt
*CDC is the trademark of the Control Data Corporation.
*IBM is a trademark of the International Business Machine Corporation.
*DEC is the trademark of the Digital Equipment Corporation.




今天早上把96正式歷屆作完囉 :)

96正式 Problem 6 (關係運算子

Problem 6 (關係運算子 7%)

請設計一個程式,能判斷出兩個數值之間三種狀態的關係運算子:
(1)第一個數字大於第二個數字。
(2)第二個數字小於第一個數字。
(3)兩個數字一樣大。
第 4 頁/共 5 頁
輸入說明:每一列由二個數字所組成,為一組測試資料。每個數字與數字間的區隔為一個空白符號,當為0 0時表示結束。(請參照輸入範例)
輸入範例:test6.txt
10 20
20 10
10 10
0 0
輸出說明:對於每組測試資料,輸出『>』、『<』、『=』,代表該二數字的關係。(請參照輸出範例)
輸出範例:result6.txt



96正式 Problem 5 (尋找第K大的位置

Problem 5 (尋找第K大的位置 12%)

請設計一個程式,能在一個數列中,找出此數列第K大數字的位置。例如,有一個數列為8,20,27,17,13,28,35,31,第三大的數字為28,此數字的位置在串列中的第6個位置;第5大的數字為20,此數字的位置在串列中的第2個位置。
輸入說明:輸入之第一列為下一列數列中的個數。第二列為數列資料。每個數字與數字間的區隔為一個空白符號。第三列及以後的資料為要尋找第K大數字的K值,當為0時表示結束。(請參照輸入範例)
輸入範圍:輸入的數列最少為2個,最多不超過100個。每個數列中的數字皆大於0,小於1000,且不重覆。
輸入範例:test5.txt
8
8 20 27 17 13 28 35 31
3
5
10
0
輸出說明:輸入的每個K值皆有一個位置的輸出結果,若超過數列的個數則輸出-1。(請參照輸出範例)
輸出範例:result5.txt
6
2
-1

96正式 Problem 4 (借盤子

Problem 4 (借盤子 13%)

張三把所持有的1000個盤子分別裝在10個箱子裡,每個箱子分別裝進1、2、4、8、16、32、64、128、256、及489個盤子。張三將這些箱子依序標上1~10的號碼。有天,李四想找張三借N個盤子,張三知道每個箱子的編號與箱子內所放盤子的個數,但如何設計一個程式,在不拆開箱子重新組合盤子的情況下,告訴張三應拿出那些箱子給李四,才能得到李四要借的盤子數目呢?
輸入說明:每列中的數字代表要借的盤子數,當為0時表示結束。(請參照輸入範例)
輸入範圍:每列中的數字皆大於0,小於等於1000。
輸入範例:test4.txt
717
329
0
第 3 頁/共 5 頁
輸出說明:每個數字代表箱子的編號,每個數字與數字間的區隔為一個空白符號,請由大到小排列。(請參照輸出範例)
輸出範例:result4.txt
10 8 7 6 3
9 7 4 1

96正式 Problem 3 (數獨

Problem 3 (數獨 23%)

「數獨sudoku」來自日文,但概念源自「拉丁方塊」,是十八世紀瑞士數學家歐拉發明的。其遊戲規則為: 在九個九宮格裡,填入1到9的數字,讓每個數字在每個行、列及九宮格裡都只出現一次。謎題中會預先填入若干數字,其他宮位則留白,玩家得依謎題中的數字分佈狀況,邏輯推敲出剩下的空格裡是什麼數字,範例如下圖所示。請設計一個程式,可以幫助玩家提示空格中尚可填入的數字。例如:第5行第3列的位置尚可填入1這個數字;第6行第7列的位置尚可填入7與8這兩個數字;而第5行第5列的位置已有數字填入則輸出0。

輸入說明:輸入的第一列到第九列為數獨資料,每一列由九個數字所組成。數字1到9為已填入的數值,0代表尚未填入數值的空格,每個數字與數字間的區隔為一個空白符號。第十列及以後的資料為要提示位置的座標(座標的定義方式為右上角為9 1,左下角為1 9,第一個數字代表行,第二個數字代表列),當為0 0時表示結束。(請參照輸入範例)

輸入範例:test3.txt
4 0 0 8 0 5 0 1 0
2 0 0 0 0 9 0 8 0
6 0 8 0 0 3 4 9 0
0 0 5 0 2 0 6 0 0
0 0 1 0 7 0 9 0 0
0 0 7 0 8 0 3 0 0
0 9 0 1 0 0 0 0 2
0 8 0 4 0 0 0 0 9
0 3 0 6 0 2 0 0 7
5 3
6 7
5 5
0 0

輸出說明:每個提示位置有一列輸出結果,表示尚可填入的數字,請由小到大排列。每個數字與數字間的區隔為一個空白符號。若該位置已有填入數字,或找不到提示的數字則輸出0。(請參照輸出範例)
輸出範例:result3.txt
1
7 8
0

96正式 Problem 2 (總和檢查

Problem 2 (總和檢查 16%)

請檢查一個數列中,尋找任兩個數字相加後的和是否會等於輸入的檢查值。例如,有一個數列為8,20,27,17,13,28,35,31,若輸入的檢查值為48,會找到20及28兩個數,相加的和為48;反之若輸入的檢查值為50,則會找不到配對的數字。
輸入說明:輸入之第一列為下一列數列中的個數,第二為列為數列資料。每個數字與數字間的區隔為一個空白符號。第三列及以後的資料為輸入的檢查值,每一列有一個檢查值,當為0時表示結束。(請參照輸入範例)
第 1 頁/共 5 頁
輸入範圍:輸入的數列最少有2個數字,最多不超過100個。每個數列中的數字皆大於0,小於1000,且不重覆。
輸入範例:test2.txt
8
8 20 27 17 13 28 35 31
48
50
0
輸出說明:每個檢查值有一個輸出結果,若有匹配的檢查值,則輸出為1,反之為-1。(請參照輸出範例)
輸出範例:result2.txt
1
-1

96正式 Problem 1 (最長遞增子序列

Problem 1 (最長遞增子序列 21%)

考慮一個數列在刪除最少個數的情況下,使得剩下的數字呈現遞增狀態。例如,有一個數列為8,20,27,17,13,28,35,31,若保留前三個數字,其餘的全部刪除,剩下的就是一個遞增序列;或者是保留第一、第三、第六及第七,其餘的全部刪除,剩下的也是一個遞增序列,但是與前一個例子相比,其遞增的序列較長。
輸入說明:輸入之奇數列為下一行數列中的個數,偶數列為數列資料,代表一組測試資料。每個數字與數字間的區隔為一個空白符號,當奇數列為0時表示結束。(請參照輸入範例)
輸入範圍:每個數列最少有2個數字,最多不超過100個。每個數列中的數字皆大於0,小於1000,且不重覆。

輸入範例:test1.txt
8
8 20 27 17 13 28 35 31
15
13 14 55 21 66 72 23 73 1 2 88 83 84 24 7
0
輸出說明:每組測試的數列皆要輸出欲刪除的個數。(請參照輸出範例)

輸出範例:result1.txt
3
7

2011年10月17日 星期一

二分搜尋法

請以二分搜尋法的方式,求2的平方根及3的三次方根。
說明:1,本題限制不能使用內定的函數來求解。(就是不能用sqrt(x)函數)
2,提示,在1和2之間,以二分搜尋法找x,然後比較x*x 和 2的大小關係。(另一個,當然就是x*x*x和3的大小關係啦。)

十月小考

100程式設計選手隊小考
題1:4x4數字方陣
‭ ‬請寫程式將1到16的數字,排進4x4的數字格中,讓直行、橫行、對角線的加總都相同。

題2‭:‬空間切割
‭ ‬對輸入的任意正整數n,空間中的n個平面最多可將空間切成幾個區域‭?‬
‭ ‬輸入例‭:(‬in2‭.‬txt‭)‬
‭ ‬1
‭ ‬2
‭ ‬輸出例‭:(‬out2‭.‬txt‭)‬
‭ ‬2
‭ ‬4
題3‭:‬海藻(algae)
根據最新的生態學研究報導,在台北市植物園的蓮花池中,發現了一種奇特的海藻,此種海藻的外形具有一種十‭ ‬分特殊的性質:

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

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

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

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

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

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

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

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

範例輸入‭ ‬:

3‭ ‬
3‭ ‬1‭ ‬
5‭ ‬5‭ ‬
6‭ ‬100‭ ‬
範例輸出‭ ‬:

0‭ ‬
1‭ ‬
-1

96模擬 Problem 7 (排序

Problem 7 (排序 16%)

排序在電腦科學中是一個重要的部分,在這個問題中將限定使用一種排序方式,就是你只能交換相鄰的2個元素。將數列由小到大排序,並計算出最少要交換幾次才能排好。例如給你1 2 3,那需要交換的次數為0,因為已經排好了。例如給你2 3 1這個數列,第一次交換1跟3變成2 1 3,第二次交換2跟1變成1 2 3,因此最少需要交換2次才可排好。

輸入說明:輸入之奇數列為下一行數列中的個數,偶數列為數列資料,代表一組測試資料。每個數字與數字間的區隔為一個空白符號,當奇數列為0時表示結束。(請參照輸入範例)
輸入範圍:每個數列最少有2個數字,最多不超過100個。每個數列中的數字皆大於0,小於1000,且不重覆。
輸入範例:test7.txt
3
1 2 3
3
2 3 1
0

輸出說明:對每一組輸入資料,輸出最少需要交換的次數。(請參照輸出範例)
輸出範例:result7.txt
0
2

96模擬 Problem 6 (排列組合

Problem 6 (排列組合 17%)
請設計一個程式,可以將一組數字、字母或符號進行排列,以得到不同的組合順序,例如123這三個數的排列組合有:123、132、213、231、312、321六組;或是ABC這三個字母的排列組合有:ABC、ACB、BAC、BCA、CAB、CBA六組。

輸入說明:第一列為要排列的列數,第二列及以後為一組由數字、字母或符號組成的字串。(請參照輸入範例)
輸入範圍:每個數字、字母或符號皆為一個字元,每組最少為3個字元,最多不超過10個,且不重覆。
輸入範例:test6.txt
2
213
ABC

輸出說明:輸出不同的組合順序,順序規則如下:請按照字典排序,由左到右,由上到下,由小到大排列。(請參照輸出範例)
輸出範例:result6.txt
123
132
213
231
312
321
ABC
ACB
BAC
BCA
CAB
CBA

96模擬 Problem 5 (最小距離

Problem 5 (最小距離 14%)

請設計一個程式,能在一個數列中,找出相鄰兩數的最小距離。例如,有一個數列為8,20,27,17,13,28,35,31,8與20的距離為12;20與27的距離為7,與前一個例子相比,其距離較小。

輸入說明:輸入之奇數列為下一行數列中的個數,偶數列為數列資料,代表一組測試資料。每個數字與數字間的區隔為一個空白符號,當奇數列為0時表示結束。(請參照輸入範例)
輸入範圍:每個數列最少有2個數字,最多不超過100個。每個數列中的數字皆大於0,小於1000,且不重覆。
輸入範例:test5.txt
8
8 20 27 17 13 28 35 31
15
13 14 55 21 66 72 23 73 1 2 88 83 84 24 7
0

輸出說明:每組測試的數列皆要輸出最小距離。(請參照輸出範例)
輸出範例:result5.txt
4
1

數數愛明明

內容 :

數數是班上聰明又漂亮的女生,有一天……,她愛上了明明。
她對明明說:「我們的愛,若是錯誤,願你我沒有白白受苦。呃,不是,我們的愛就像是函數!」
明明說,「是啊,我對妳的愛是與日俱增呢!」
數數開心地說,「你的意思是,你在第 n 天對我的愛若用函數 f(n) 來描述,那麼,f(n) = n + f(n-1)。也就是說,每一天都比前一天多了一單位的愛,並且與舊的愛累積起來嗎?」
明明點了點頭,然後問,「那麼,妳呢?」
數數說,「我在第 n 天對你的愛若是 g(n),那 g(n) = f(n) + g(n-1)!」
於是,明明笑了笑,摟著數數說,我一定會更加愛妳的!
註:在第一天的時候,f(1) = g(1) = 1。

輸入說明 :
輸入以 EOF 結束。每一筆測試資料有一個數字 n,其中 n > 0。
此外,50% 的測資 n <= 500;80% 的測資,n <= 3000;全部的測資 n <= 30000。

輸出說明 :
輸出 f(n) 與 g(n)。
範例輸入 :
1
2
3
5
8
13

範例輸出 :
1 1
3 4
6 10
15 35
36 120
91 455


出處 :
(管理:VacationClub)

96模擬 Problem 4 (數學遊戲

Problem 4 (數學遊戲 18%)

在英國有一個數學遊戲,給參賽者一些正整數和一個目標數,參賽者必須在這些正整數間插入+、-、*或 / 的符號,使得最後計算的結果等於目標數。計算的方式是由左到右,而且不必管運算的優先順序(就是不管先乘除後加減那一套)。
在這個數學運算式中,有三個限制:
1. 正整數出現的次序不可改變,也就是說要與輸入的順序相同。
2. 因為目標數也是一個正整數,所以在運算的過程中,你只有在可以整除的情況下,才可以使用除法。
在運算的過程中,如果你用某一個運算符號,會導致產生的數超出-32000 ~ +32000的範圍,那麼你不可以採用此運算符號(也就是說,在運算的過程中都不允許有超出範圍的數出現)。

輸入說明:輸入檔案的第一列是1個整數n,代表接下來有多少組測試資料。每組測試資料一列。每列的第一個整數 p(0 < p 100),代表要做運算的數有多少個。接下來有p個正整數,每列的最後一個數(即p+1個)為目標數。所有的數都小於32000,而每個數字間以一個空格分開。(請參照輸入範例)
輸入範例:test4.txt
3
3 5 7 4 3
2 1 1 2000
5 12 2 5 1 2 4

輸出說明:每列測試資料輸出一列運算式,使得輸入的p個正整數運算的結果等於目標數。如果找不到這樣的運算式,請輸出『無解』。如果有多組運算式可以達成任務,請輸出任何一組均可。(請參照輸出範例)
輸出範例:result4.txt
5+7/4=3
無解
12-2/5*1*2=4

2011年10月15日 星期六

Ubiquitous Religions

內容 :

這個世界上有許多不同的宗教信仰。你想要知道你就讀的大學中,學生們到底信了多少種不同的宗教。

在你就讀的大學中共有 n 個學生 ( 0 < n <= 50000 )。顯然你不可能對每個人個別詢問他們的信仰,而且某些學生也不方便透露他們所信的宗教。而解決這些問題的一種可能的方法是詢問 m ( 0 <= m <= n(n-1)/2 )對學生他們是否信同一個宗教 (例如他們可能一起去某間教堂,會知道他們彼此信相同的宗教 )。由這些資料,即使你沒辦法知道每個人信哪個教,但是你可以估計出他們最多信了多少種不同的宗教。你可以假設每個學生最多信一個宗教。

輸入說明 :
輸入中包含了許多的測試資料。每筆測試資料由一列包含兩個整數 n 及 m 作為開頭。接下來的 m 列每列包含了兩個整數 i 和 j,代表學生 i 和學生 j 信同一個宗教。這些學生編號為 1 到 n。

當 n = m = 0 的時候代表輸入結束。

輸出說明 :
對於每筆測試資料,請先輸出測試資料的編號(由1開始),然後輸出學生們最多信了多少種不同的宗教。

範例輸入 :
10 9
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
10 4
2 3
4 5
4 8
5 8
0 0

範例輸出 :
Case 1: 1
Case 2: 7

提示 :
※ 譯 Lucky貓
※ 并查集
※ 請用EOF做結尾,測資不易重生...

出處 :
UVA 10583 (管理:morris1028)

迴文

內容 :

  迴文是運用相同詞彙、相反順序組合而成的語句,是一種修辭法,也有人把它當做文字遊戲。
  一個迴文可以是一個句子:「上海自來水來自海上」;也可以分為上下兩句:「人人為我,我為人人。」甚至可以是一首詩:

枯眼望遙山隔水,往來曾見幾心知。
壺空怕酌一杯酒,筆下難成和韻詩。
迷路阻人離別久,訊音無雁寄回遲。
孤燈夜守長寥寂,夫憶妻兮父憶兒。
兒憶父兮妻憶夫,寂寥長守夜燈孤。
遲回寄雁無音訊,久別離人阻路迷。
詩韻和成難下筆,酒杯一酌怕空壺。
知心幾見曾來往,水隔山遙望眼枯。


輸入說明 :
  第一行有一個整數 T,代表接下來有幾組測試資料。

  每一組測試資料有一個字串,字串是由小寫的英文字母所組成,每個字串的長度不會超過 100。


輸出說明 :
對每筆測試資料判斷是不是迴文 (字串正著讀和反著讀是否一樣) :如果是的話就輸出 “yes”,否則就輸出 “no”。

範例輸入 :
3
abcba
abba
abc

範例輸出 :
yes
yes
no

出處 :
2010 NPSC 國中組初賽 (管理:pcshic)

2011年10月13日 星期四

排列最大值

內容 :

給定N個正整數。試著利用連接字串的方式去排列這N個正整數,使其值最大。

輸入說明 :
每組輸入包含一串數字,第一個數字為 n,後面接著 n 個正整數

輸出說明 :
每組輸出排列後的最大正整數

範例輸入 :help

5 123 124 56 90 9
5 28 285 287 2851 2859
2 25 2523
3 89 898 899

範例輸出 :

99056124123
2872859285285128
252523
89989898



出處 :
96高市資訊學科能力競賽

Gran Turismo 5

內容 :

最近,

籌錢買了一片 Gran Turismo 5 回家做賽車夢,

又另外買了 G27 方向盤,

但在賽車場上的表現始終不如人意。

"車,不是這麼開的。"

說完爸爸接過了方向盤,

將記錄一次又一次的刷新。

給你每一圈的時間紀錄,

請算出 Best Lap 與平均時間。

我一定要成為車神!

輸入說明 :

第一行有一個數字 N (0 < N ≤ 10)

代表接下來有 N 組測試資料

每組測試資料第一行有一個數字 M (0 < M ≤ 100)

接著有 M 行資料

每行兩個數字 A, B (0 ≤ A, B ≤ 60)

代表該圈所花費時間為 A 分 B 秒

輸出說明 :

Track X:

Best Lap: X minute(s) X second(s).

Average: X minute(s) X second(s).

Average 為整數,小數部份無條件捨去

詳請參考範例測資

範例輸入 :

3
4
1 54
2 02
1 58
1 50
3
1 23
1 42
1 37
5
3 00
2 56
3 04
2 50
3 01

範例輸出 :

Track 1:
Best Lap: 1 minute(s) 50 second(s).
Average: 1 minute(s) 56 second(s).

Track 2:
Best Lap: 1 minute(s) 23 second(s).
Average: 1 minute(s) 34 second(s).

Track 3:
Best Lap: 2 minute(s) 50 second(s).
Average: 2 minute(s) 58 second(s).