考試時間:下午1點0分到4點30分。
考完將程式貼在回應,若1個回應太長,貼成2個(或以上),貼錯的,也不要刪掉。
(請只貼上有可能會正確的,寫一半的程式就不用貼上來。)
(單題跑超過10分鐘的程式,也不用貼上來,算跑不出解答的)
(1-4題,不用輸入檔的,請將解答也貼在程式後面,方便熊掌改)
(加油)
---------------------------------------------------------------------------------
1.趣味數字問題1
3888 * 2 = 7776
上式的等號兩邊都有一個四位數,注意左邊的3888的後三位數相同,而右邊的7776卻是前三位數相同。因為發現這兩個數的變化頗具特色(本來是後三位相同,乘以2後卻變成前三位相同),所以這時也突發奇想,問自己這個問題:「上面等式兩邊的四位數,除了原本的3888與7776這一組數,可以構成一組型如(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