顯示具有 選手隊小考 標籤的文章。 顯示所有文章
顯示具有 選手隊小考 標籤的文章。 顯示所有文章

2012年10月29日 星期一

VB101正副選手考3 (2012.10.29考試)

VB101正副選手考3 (2012.10.29考試)
考試時間:下午1點0分到4點30分。
考完將程式貼在回應,若1個回應太長,貼成2個(或以上),貼錯的,也不要刪掉。
(請只貼上有可能會正確的,寫一半的程式就不用貼上來。)
(單題跑超過10分鐘的程式,也不用貼上來,算跑不出解答的)
(1-4題,不用輸入檔的,請將解答也貼在程式後面,方便熊掌改)
(加油)
---------------------------------------------------------------------------------
1.趣味數字問題1
3888 * 2 = 7776
上式的等號兩邊都有一個四位數,注意左邊的3888的後三位數相同,而右邊的7776卻是前三位數相同。因為發現這兩個數的變化頗具特色(本來是後三位相同,乘以2後卻變成前三位相同),所以這時也突發奇想,問自己這個問題:「上面等式兩邊的四位數,除了原本的38887776這一組數,可以構成一組型如(abbb,cccd)的四位數組解之外,是否還有其他的四位數組解呢?」
也就是說,請找出下面包含兩個未知的四位數abbb,cccd的數學式子的解:
abbb *2 = cccd
上面的abbb與cccd加上底線,是強調它們是十進位的寫法。其中,a,c是1~9的正整數,b,d是0~9的整數。為了避免出現像1111×2=2222或3333×2=6666這樣子的例子出現,我們規定a與b不同,且c與d也不同。
請將解答輸出於out1.txt,若無其它解,則寫「無」。

2.趣味的數字問題2
請看第一個式子如下:
當時筆者是將上式寫在一面黑板上,隨後筆者心血來潮,動手把某些數字擦掉,使其成為下式:
此時筆者身旁剛好有一位數學同好,筆者問他:「數字內應該填什麼呢?」,他頗認真的解了起來,解法很不錯。大概看過他所使用解法後,我也獲得了一些想法。而這件事過了幾天後,筆者也自問:「空格裡面的數字,除了原本等號左邊的132與等號右邊的17寫入可以滿足等式之外,是否還可以填上其他不同的數字呢?」
請將解答輸出於out2.txt,若無其它解,則寫「無」。

3.又是質數問題
假設a, b, c, a+b-c, a+c-b, b+c-a, a+b+c,皆為相異正質數,且其中兩數和為1000。求a+b+c的最大可能值是多少?

4.暴力証明題
有個數學証明題,是要証明存在一個3的正整數次方,其十進位展開末3位數為001。
証明的方式當然很數學,這裡請用電腦程式的方式,找出到底是3的n次方的展開末3位數為001。
n的最小值是多少?

5.換牌問題
若 現在有 5張撲克牌,點數分別是 1點至 5點,各張牌的點數都不同,並且 5張牌已依點數由小到大排列。選手若要改變排列順序,只能用「換牌」動作。假設一個「換牌」的動作,可以將順序中的第 1張牌(首牌)與其他牌「交換」位置,形成1個新的牌組順序。我們現在用 1個長度為 5的字串,表示1個牌組順序。例如以字串「12345」,表示這 5張牌現在依其點數由小到大排列。如果我們進行第 1次「換牌」動作,假設將「牌 1」(首牌)與「牌 5」交換,就形成新的牌組順序「52341」。如果要進行第 2次的「換牌」,就將「牌 5」(首牌)與其他牌交換,即可形成下一個牌組順序。現在給一個「目的地牌組順序」,請從牌組順序「12345」開始,用最多 10次的「換牌」動作,最後轉換成「目的地牌組順序」。
輸入說明:第 1行為給定的「目的地牌組順序」字串(長度為5)。
輸出說明:第 1行輸出起始牌組順序「 12345」,最後 1行輸出「目的地牌組順序」。第 2行起依序輸出每次「換牌」後的牌組順序。

輸入檔案 :【檔名:in5.txt】
21534

輸出檔案:【檔名:out5.txt】
12345
32145
42135
52134
12534
21534

6.日期判斷
請選手判斷輸入檔中的 4行文句,是否存在符合條件的「日期字串」。
在 文句中,只可能包括「中文」及「半型數字」,並且不包含任何空白及標點符號。待檢查的「日期字串」格式為「民國yyy年 mm月 dd日」,其中「民國」、「年」、「月」及「日」的順序不可改變。屬於年的「 yyy」部分,合法值是「1~999」,可存在「前置 0」,但其長度僅能是 1、2或 3位數。例如民國 9年,可表現為「民國 9年」、「民國 09年」或「民國 009年」。關於月份部分,合法值是「1~12」,同樣接受「前置 0」,其長度僅能是 1或 2位數。日期部分的範圍是「 1~31」,亦接受「前置 0」,其長度僅能是 1或 2位數。選手應另注意,符合條件的日期值不應超過該年當月份的最大天數,例如某年某月份有 30天,則符合條件的日期值為1~30。

【註 1】西元年 = 民國年 + 1911
【註 2】在本題限制的年份中,若其西元年「可被 400整除」或是「可被 4整除而且不被 100整除」,則當年是閏年,其2月有 29天,否則為 28天。

輸入說明:輸入檔中的第 1~4行,表示待檢查的 4句文句,每行文句均獨立檢查,每句文句不超過 100個字。
輸出說明:依序 4行輸出,分別對應輸入檔第 1~4行文句之檢查結果。若文句中存在符合條件的「日期字串」請輸出「符合」,若不存在時請輸出「不符合」。

輸入檔案 :【檔名:in6.txt】
他的生日是民國 89 年2 月29 日
她的生日是民國 90 月2 年29 日
民國 90 年3 月25 日是他的到職日
民國 90 年25 日3 月是她的到職日

輸出檔案:【檔名:out6.txt】
符合
不符合
符合
不符合

7.樂透電腦選號並排序
樂透號碼由1到49中,選取6個數字為一張彩券。有些人喜歡自己選,有些人喜歡交給電腦選號。請寫個程式,幫買家電腦選號。
由檔案中讀入欲購買的張數,輸出不同號碼組合的彩券,號碼要儘量亂選,不要買家才想買3張,電腦選擇的是
1,2,3,4,5,6
1,2,3,4,5,7
1,2,3,4,5,8
這樣買家會覺得電腦怎麼這麼笨而有抱怨。(雖然說不定這才是第1特獎呢?)
當然,更不能讓買家買到重複組合的彩券。(應該沒有人可以買超過所有組合吧?)
所以,請在輸出之前,將這些彩券排序,每張彩卷的號碼都是由小到大排。
而不同張彩券的排序,請以這些號碼的總和來排,也是由小到大排列。
例如:
輸入檔案:
3
輸出檔案:
3 17 22 29 31 38
2 11 33 39 44 48
15 19 32 35 37 49

8.數字個數拆解
計算二數成績的數字個數:從指定目錄"in.txt"讀取二個四位數正整數,相乘的積,計算該數字0到9的數字個數,輸出至指定目錄"out.txt"。
如1255*2100=2635500,結果有0有2個,2有1個,3有1個,5有2個,6有1個。其他個有0個,不用顯示。

輸入範例:1255 2100
輸出範例:02 21 31 52 61

9.16進位
讀取一正整數,將它轉為16進位後輸出。
輸入範例:168
輸出範例:A8

10.時針和分針的夾角
在一般的時鐘上通常有兩根指針:時針、分針。請從"in10.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

2012年10月25日 星期四

VB101正副選手考2 (2012.10.24考試)

VB101正副選手考2 (2012.10.24考試)
1.數獨
「數獨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


2.保齡球計分板

在世界各地,保齡球是相當受歡迎的運動項目之一,藉著球道上滾動的球,來碰倒球道上的球瓶,勝負以擊倒球瓶之多寡的計分來判定。請你根據下面的計分規則,寫一個保齡球
計分程式,規則如下:
一、每一局共10 格,依序完成每1 格。
二、每格的分數將累計到下1 格。
三、第1 至9 格之計分:每1 格在2 球以內,將全部10 個球瓶擊倒為原則,分數計算方式可分為:
一、 全倒(Strike):第1 球就將全部球瓶擊倒,即完成一格。分數計算分式為10 分,再加上下2 球的擊倒瓶數。
二、補全倒(Spare):第1 球未全倒時,再打1 球將剩餘球瓶全部擊倒。分數計算方式為10 分,再加下1 球的擊倒瓶數。
三、打完第 1 球後,第2 球如未將剩餘之球瓶全部擊倒,分數為第1 球加第2 球擊倒之球瓶數。
四、第10 格計分方法:如果前2 球為全倒或補全倒,可再加打1 球,最多打3 球。
五、計分劃記的符號代表意義如下:
1. 全倒以記號『X』來代表。
2. 補全倒以記號『/』來代表。
3. 數字代表擊倒的球數。
4. 擊倒球數為 0 時以『-』來代表。

舉例來說:
每格擊球 7- 8/ X 8- X X X X X 8/9
分數 7 27 45 53 83 113 143 171 191 210
輸入說明:
第一行的數字,表示有幾個計分板要計分,第二行開始的每一行,為一個獨立的計分板。
每一行包含10 格擊球結果。每格以一個空白作為區隔。
輸出說明:
對輸入的每個計分板,分別計算出後的總分數。
輸入範例:
2
7- 8/ X 8- X X X X X 8/9
X X X X X X X X X XXX
輸出範例:
210
300


3.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


2012年10月15日 星期一

VB101程式小考

VB101程式小考


1.若一個魔方陣 方格內的數均為質數,則稱此為質數魔方陣。
 已知在小於120的質數中,可以組成一個3階的質數魔方陣。
 請寫程式,找出這個3*3的質數魔方陣。
 輸出參考:
 107,131,29
 11  ,89 ,167
 149,47,71
 (註1:這是另一個小於170質數的質數魔方陣。)

2.觀察下列兩個等式有何規律?
       (1)12 ×42=21 ×24  
       (2)13 ×62=31 ×26
 利用你所發現的規律,請寫程式再找出3個類似的等式(兩數皆為兩位數)!

3.1202年,義大利數學家斐波那契出版了他的「算盤全書」。
他在書中提出了一個關於兔子繁殖的問題:
如果一對兔子每月能生一對小兔(一雄一雌),而每對小兔
在牠出生後的第三個月裡,又能開始生一對小兔,假定在
不發生死亡的情況下,由一對出生的小兔開始,30個月後會有
多少對兔子?


請在時間到時,或是,寫完程式時,將程式及解答一併貼出來。
(只貼一次,若有意外,也請不要刪除前次貼文)

2012年4月2日 星期一

VB101小考 第1次

VB101小考 第1次


1.從檔案(in1.txt)裡讀出所有的數字(不定個數),降冪排序,輸出到檔案(out1.txt)。

2.山寨版的費氏函數。
  S(1)=10
  S(2)=-3
  S(n)=S(n-1) - S(n-2),當n>=3。
  從檔案(in2.txt)裡讀出單一個n,將S(n)的值,輸出到檔案(out2.txt)。

3.請找出某4位數的值,等於每個數字的立方和的數。全部輸出到檔案(out3.txt),若無,請輸出0000。

4.請隨機將撲克牌的52張牌,分給4個玩家。輸出到檔案(out4.txt),每次執行的結果需要不同。
 撲克牌的表示法,數字大小為(A,2,3,4,5,6,7,8,9,10,J,Q,K),花色的表示法為(黑桃,紅心,紅鑽,黑花)。
  輸出的檔案有4行,每行13張牌,不用排序。例:紅心J  黑花K  紅心2  紅鑽3 …


另說明,小考不附輸入檔(in1.txt等),請自行建立。

2011年9月5日 星期一

九月小考




100程式設計選手隊小考
題1:排列組合
有x顆紅色小玻璃珠和y顆黑色小玻璃珠在一個黑箱子,一把取出z個,請寫程式列出共有幾種組合。
輸入說明:in1.txt只有1行數字,分別表示x,y,z。
5,3,3
輸出說明:以紅黑來表示玻璃珠,輸出到out1.txt
紅紅紅
紅紅黑
紅黑黑
黑黑黑

題2:數字方陣
請將數字1,2,3,…,n^2,排成n*n的正方形矩陣,使用每個橫列直列和兩個對角線加起來的和,都相等。(n可以是3,5,7,9)
輸入:in2.txt輸入n值
5
輸出:out2.txt,為使數字對齊,個位數請加個0
17 24 01 08 15
23 05 07 14 16
04 06 13 20 22
10 12 19 21 03
11 18 25 02 09


題3:倍數問題
有一個50位的大數,請寫程式計算它是不是197的倍數。
輸入:in3.txt每行是個50位數的大數,0表示結束。
19719719719719719719719719719719719719719719719700
38400000000000000000000000000000000000000000000001
0
輸出:out3.txt

不是