發表文章

目前顯示的是 1月, 2020的文章

Zerojudge 基礎題庫a017 五則運算(Python)

圖片
只要有碰到字串的題目,都麻煩死了... 這題我做了5個小時,感覺自己在搞混自己,幸好,最後debug出來了 這題有兩個思維我想說,一個是括號,另一個是先乘除後加減。 1.括號 括號是一個棘手的題目,因為一題可能有兩個以上括號,還有可能括中括 那怎麼辦? 舉一個例子好了: (( 1 + 2 ) + ( 3 + 4 )) + 5 先找最右邊的  '('   : (( 1 + 2 ) + ( 3 + 4 )) + 5 然後找她右邊的第一個  ')'  : (( 1 + 2 ) +  (  3 + 4 ) ) + 5 再來我們把()中間的東西運算好,整個替代 ( 3 + 4 ) (( 1 + 2 ) + 7 ) + 5 然後一直重複以下步驟,一直到沒有括號 (( 1 + 2 ) + ( 3 + 4 ) ) + 5 ( ( 1 + 2 ) + 7 ) + 5 ( 3 + 7 ) + 5 10 + 5 最後再計算一次就行了~ 2.先乘除後加減 首先,我們只合併 * / % 這些符號 最後,再合併 + - 這些符號 例如:  2 * 3 + 10 / 5 - 3 % 2 我們先看 * / %  2 * 3 + 10 / 5 - 3 % 2 6 + 10 / 5 - 3 % 2 6 + 2 - 3 % 2 6 + 2 - 1 再看 + - 6 + 2 - 1 8 - 1 7 提示就這些,剩下的自己練習吧 3.程式碼: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71

Zerojudge 基礎題庫a013 羅馬數字 (Python)

圖片
一、題目重述 這題真的需要好好講一下,因為題目敘述真的好長。 我重新敘述一下題目好了: 輸入: 兩個羅馬數字 輸出: 一個羅馬數字,值為輸入的兩值相減 二、解法大綱 首先,羅馬數字只是用來單純標示他的值,無法做計算 而且電腦只看得懂阿拉伯數字,所以在做計算時,須先把羅馬轉成阿拉伯 因為題目是輸入兩個羅馬數字,無法直接做相減的動作,所以第一步先把羅馬轉成阿拉伯。 轉成阿拉伯後,就可以相減了,記得加絕對值,因為題目說可能第一數比較小。 計算出答案後,最後把它變成羅馬數字,就可以了。 三、解法問題 有兩個問題,也就是題目的主要部分。 1.羅馬轉成阿拉伯 我們先來觀察一個羅馬數字: III 我想聰明的你,這一定是三,那我問: 你怎麼知道? 我先給一下轉換表: I 1  V5  X10  L50  C100  D500  M1000 好,回來正題,III可以看成是 I + I + I 轉換後也就是 1 + 1 + 1,答案是3 再一個羅馬數字 IV 如果你用上面的方法,1 + 5 = 6,可是答案是四耶~ 那是因為羅馬數字有一個特殊的規則, 數碼限制: 同一數碼最多只能連續出現三次,如40不可表示為XXXX,而要表示為XL (羅馬數字 - 維基百科) 如果我們使用IIII來表示4,感覺I太多了,所以用IV來表示,意思是 5 - 1 換一個方式來表達,也就是 -1 + 4 那  MCDXXXVII  呢?我們先把一個一個分開來,變成: M, C, D, X, X, X, V, I, I 接下來,一一轉成數字,變成: 1000, 100, 500, 10, 10, 10, 5, 1, 1 接著,我們使用一個小伎倆: 在較大的羅馬數字的左邊記上較小的羅馬數字,表示大數字減小數字 我們先找右邊數字比自己大的,找到就把它變成負的 1000, 100, 500, 10, 10, 5, 1, 1 1000右邊是100,比1000小,不變成負的,下一個 100右邊是500,比100大,把它變成負的(100 => -100) 500右邊是10,比500小,不變成負的,下一個 就這樣一直到倒數第二個,最後數列為:

Zerojudge 基礎題庫a004 文文的求婚 (Python)

圖片
西元年被4整除且不被100整除,或被400整除者即為閏年 => year % 4 == 0 and year % 100 != 0 or year % 400 == 0 如果是True就是閏年 False 則是平年 對!就這樣~ Python 程式碼: 1 2 3 4 5 6 7 8 9 10 while 1 : try : x = int ( input ()) except : break if x % 4 == 0 and x % 100 != 0 or x % 400 == 0 : print ( "閏年" ) else : print ( "平年" )