2017年3月28日 星期二

Q993: Product of digits

https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=934


這題其實不難,我當初想太複雜還用質數求公因數,但其實不是這樣的,題目只是要每個位數相乘等於你輸入的數目
舉例:90=>2*5*9 所以輸出259就好啦~很簡單吧
至於我是怎麼實作的,首先建立一個StringBuilder他類似於String型態但她可以呼叫reverse()字串翻轉很方便,那我們就從9開始除囉直到不等於1,若能整除依序append()到字串變數中,最後輸出reverse()就是最小數啦,那還要檢查最後如果每個位數相乘不等於輸入的數就輸出-1囉!
還有還有0跟1要個別判斷哦

2017年3月27日 星期一

Q11349: Symmetric Matrix

https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2324


這題主要是要搞清楚對稱矩陣(Symmetric matrix)的特性以下是名詞解釋

若矩陣A與其對換矩陣AT相等,則A稱為對稱矩陣,對稱矩陣恆為一方陣。   對換矩陣AT是依序交換A中行與列後所得矩陣,亦即:(AT)ij=Aji(對所有i與j而言)

寫了這麼多看不懂的話聽我解釋~簡單來說低一個數字跟最後個數字要一樣第二個數字要跟倒數第二個數字一樣
我們再把二維陣列概念想成簡單的一維去時做就行了
記註記住對稱矩陣內不能有負數


Q1644: Prime Gap

https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4519

這題是2016/12/10CPE第四題,並不難主要是要先建立質數表才不會LTE
至於怎麼快速建表呢?簡單來說質數一定是奇數,不多說下面有質數建表範例

這題主要是找尋該數在質數的Gap當中有幾個非質數數目,若本身為質數就輸出零

[C_AR118-易] 硬幣組合

http://e-tutor.itsa.org.tw/e-Tutor/mod/programming/view.php?id=20740

這題的組合簡單來說就是兩個串列中各挑一個數字相加,那他的時間複雜度就是O(10*10)
用雙迴圈就能算出所有組合了,但這邊要記住相加結果重複就不用再印出來了
Java有個很好用的容器較TreeSet,他不但可以做排序而且若遇到相同的數值會直接合併(捨去),簡單來說TreeSet是個集合它裡面幫你做好排序而且所有值不會重複具有唯一性
至於要怎麼把集合Set的值呼叫出來,這時就需要一個容器ArrayList的方式儲存集合裡的值才能去取得集合裡的資料
最後注意輸出是每十個為一行,每行最後一個不空白,最後結束還要換行!
ps.至於第二種寫法是大二時寫的單純只用到陣列輸出時再逐一判斷是否有重複(非常浪費時間,屬於笨方法)