【測驗M07】雄中八十九學年度『資訊學科能力競賽』程式設計試題                 [回前頁]

一、輸入兩個長位數的定點實數 並計算其相乘的結果,並利用以上之結果,在輸一個數N(N為1至9之正整數)後,可逼近其開立方根( )值至小數點下第二十位。
  註:1.計算結果的精確度至少可達到100位。
    2.計算結果『不』得以指數形式顯示(例:3.141596E+4)
    3.在此題之中,『負數』是可接受的。
    4.不得使用與次方相關之指令或內建函數,例^,pwd等
  例:(1)Num1=1234.5678
        Num2=0.00123467
        Result = 1.524283825626
      (2)N=?2
       2^(1/3)=1.25992104989487316476

測    試    資    料

(1)Num1=1234.5678
   Num2=0.9999999
   Rslt=1234.56767654322

(2)N=2
   2^(1/3)=
   1.25992104989487316476

(1)Num1=987654321.123
   Num2=0.00123
   Rslt=1214814.81498129

(2)N=3
   3^(1/3)=
   1.44224957030740838232

(1)Num1=0.00123
   Num2=0.00123
   Rslt=0.0000015129

(2)N=5
   5^(1/3)=
   1.70997594667669698935

(1)Num1=0.00999
   Num2=12.23
   Rslt=0.1221777

(2)N=6
   6^(1/3)=
   1.81712059283213965889

二、試作出一能作質因數分解之程式,若是質數,則顯示出是「質數」,在顯示時,質數由「大至小」顯示,冪方以「^」來代表,而乘號以「*」來代表:  (N>=2, N為長整數)
 例:Input N=192
   192=3^1*2^6

測    試    資    料

Input N=8
8=2^3 

Input N=53
53是質數

Input N=17
17是質數 

Input N=100
100=5^2*2^2

Input N=92
92=23*2^2 

Input N=91
91=13*7

三、現在台幣有「50元」、「10元」、「5元」、「1元」等種錢幣,因此,如果現在有15元的話,可以找錢的方式就有6種。
  現在,請您作出一個程式,在使用者輸入完幣值後,再輸入金額,便能計算出到底有多少種找錢的方式,「無」須顯示出找錢的方式為何,只要顯示有多少種。
  請注意的是:幣種可以多種,最多可達六種,但不會為「非正整數」,輸入時,使用者會由大而小的輸入,也不會刻意輸入兩種相同的幣值。但幣值不一定為多少,有可能為10,8,5,2,1,也可以為其他奇奇怪怪的數字,例17,15,13,1等等。另外,由於讓程式容易判斷,輸入的金額將只會介於1∼100,不會有太大的現像。

測    試    資    料

請輸入幣值(輸入0作結束):
?10
?5
?1
?0
請輸入金額=15
共計6種找錢法 

請輸入幣值(輸入0作結束):
?7
?5
?1
?0
請輸入金額=15
共計7種找錢法

請輸入幣值(輸入0作結束):
?10
?5
?0
請輸入金額=14
共計0種找錢法 

請輸入幣值(輸入0作結束):
?12
?2
?0
請輸入金額=14
共計2種找錢法

請輸入幣值(輸入0作結束):
?10
?0
請輸入金額=20
共計1種找錢法 

請輸入幣值(輸入0作結束):
?1
?0
請輸入金額=20
共計1種找錢法

四、蜜蜂是一種實施「單性生殖」的動物,也就是就,一隻雌蜂一定有一個父親以及一個母親;但是一隻雄蜂一定只有一個母親,而沒有父親。同理可以判斷出來,一隻雌蜂的上兩代一定有外公、外婆、祖母,但一定沒有祖父;而一隻雄蜂的上兩代一定有外公、外婆,但因為沒有父親,所以也不可能有祖父及祖母。
  現在,請您設計一個程式,在輸入n代(Generation)後,及該蜂的性別(0,1分別代表女男),能將這隻蜜蜂的「家族樹」(只需用0,1顯示性別即可)以直角三角形狀繪出,其中父母一定位於子女的下一行的(正下方,若只有母親,母親在正下方,若同時有父母,父位於正下方,母位於右下方),也就是說,第一代位於第一行、第二代位於第二行、….第n代位於第n行;另外,父母親的顯示以「男左女右」的方式呈現,最後一代(第n代)的親屬將緊密呈現,不得有空白的存在(如下測試資料所示)。
  最後,再將本家族最有總人數給顯示出在最下面。

五、試以亂數發樸克排,發為四份,並達到
  1.AJQK不得以1,11,12,13等方式呈現
 2.每份樸克排拿到時即以"大老二"的方式來排序,即花色依
    黑桃、紅心、方塊、梅花來排列,而數字則以2,A,K,Q
    ,J,10,9~3等順序排出,牌最小者最後顯示:
 3.第一份牌,一定是握有梅花3者
 

六、羅馬數字是分別以I,V,X,L,C,D,M來代表1,5,10,50,100,500,1000的一種數字系統,而其他的數字,則是前列的字母以位中央的主數以左減、右加的方式複合而成(例:IV=4[5-1]、XI=11[10+1]、XLI=41[50-10+1],XL IV=44[50-10+(4)];網心字者均為"主數"),就如上例所示,主數、左數都是以一個字母來表示,但右數則是可以又再以同法再複合而成(例:44=XL IV;而947=1000-100+(47)=1000-100+[50-10+(7)]=1000-100+{[50-10+(5+2)]=1000-100+{[50-10+(5+1+1)]即為CMXLVII;至於左數,則必須為I,X,C(1,10,100)等數字,以5,50,500為左數的數字均視為不合法,例:50=L,而LC(100-50)則不合法,而左數的表示亦須以最接近欲表示數字的方式呈現,例(49=IL[50-1]而不是XLIX[50-10+10-1]),
  由上列的規則,我們便可以了解到,主數能表達的數字最大,左數次之,右數再次之,但右數的主數字絕對不能大於左數,(例:45=XLV,以ICVII表示106則不合法);在沒有左數的情形下,主數和右數的主數數字可以相同(例:2=II[1+1],1900=MCM[1000+(1000-100)]),至於主數的判定則由上規則便可以發現到1~3是I,4~8是V,9~39為X,40~89為L,90~399為C,而400~899為D,而900~3999為M
  下面有兩個子題,每題10分,請依序作出
  (1)在輸入一個1~3999的阿拉伯數字後,將其轉換成為用羅馬數字來表示
  (2)在輸入一個羅馬數字後,請表示成阿拉伯數字(請特別注意,此子題非常重視數「合法性」的判斷,若所輸之羅馬數字不合法,應顯示不合法,不應算出其值)

測    試    資    料

(1)Arabic N=43
   Roman N=XLII
(2)Roman N=ICXI
   Illegal Roman Number 

(1)Arabic N=1898
   Roman N=MDCCCXCVIII
(2)Roman N=MBCCXCCIV
   Illegal Roman Number

(1)Arabic N=99
   Roman N=IC
(2)Roman N=XCIX
   Illegal Roman Number 

(1)Arabic N=3999
   Roman N=MMMIM
(2)Roman N=MMMDCCCLXXXVIII
   Arabic N=3888

(1)Arabic N=491
   Roman N=XDI
(2)Roman N=XD
   Arabic N=490 

(1)Arabic N=498
   Roman N=XDVIII
(2)Roman N=IDX
   Illegal Roman Number