tag:blogger.com,1999:blog-41449596272606310912024-03-05T17:02:12.538+08:00K.SHO<br>小K 's Computer Life Diary.
<br>
<br>會整理ACM \ CPE 程式解題的筆記。
<br>
<br>於資訊安全、雲端、Linux的領域上學習,熱愛軟體開發。
KPhttp://www.blogger.com/profile/17803929247953368563noreply@blogger.comBlogger35125tag:blogger.com,1999:blog-4144959627260631091.post-6610209336084437172014-08-21T03:04:00.003+08:002014-08-21T03:04:24.027+08:00[UVA]Very Easy!UVA 10523程式解題。<br />
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8IVGVr3uqRQCkCl6gonIfOHsU6JAke6EzL7URyOtzhh5EwUZ5L-fL4uLwDjUWdzfiGfeKl1S-PONFXkIdCnu57wAyqcPls12OZ2B5yCsjCbnOcpaoGKHbH4aTwLNoouCtoNndm547mFsS/s1600/uva+10523.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8IVGVr3uqRQCkCl6gonIfOHsU6JAke6EzL7URyOtzhh5EwUZ5L-fL4uLwDjUWdzfiGfeKl1S-PONFXkIdCnu57wAyqcPls12OZ2B5yCsjCbnOcpaoGKHbH4aTwLNoouCtoNndm547mFsS/s1600/uva+10523.png" height="421" width="640" /></a></div>
<div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
解題觀念:<br />
<a name='more'></a>這題的提議很簡單明瞭。<br />
<br />
依照公式,總之就是要算<span style="color: blue;">N * A從0~N次方的總和</span>。<br />
<br />
因為題目規定的次方範圍還挺廣的,15次方耶!!到15次方耶!!<br />
<br />
所以本題要用<span style="color: blue;">BigInteger</span>下去寫。不然用int十之八九會overflow。<br />
<br />
<br />
解題步驟:<br />
<br />
我上面的程式碼是有宣告字串陣列str[],然後將字串分割放入陣列裡面,將轉成整數。<br />
<br />
可是,<span style="color: red;">其實不用這麼麻煩</span>,直接宣告兩個整數就好。那時候誤會題意,以為要一次就要輸入兩個數字所以才會這樣寫。 <span style="color: red;">請直接宣告兩個整數吧!</span><br />
<br />
如果直接宣告兩個整數輸入,就不用去做那些字串轉換成整數這些麻煩的步驟,<br />
<br />
就直接跳下面的for迴圈,從1開始,終止條件到n為止(n為次方數)。<br />
<br />
每計算一次次方,相乘之後,就加到sum裡面去。<br />
<br />
這裡計算次方所用到的函數為<b><span style="color: blue;">.pow()</span></b>;乘法的函數<b><span style="color: blue;">multiply()</span></b>;相加的函數<b><span style="color: blue;">.add()</span></b>。<br />
<br />
之後印出,最後要<b>記得初始化</b>。<br />
<br />
<br />
EX:<span style="color: red;">(我這邊寫的範例,以我上面程式碼的過程作解釋喔!)</span><br />
3 3<br />
<br />
str[0] = 3;str[1] = 3。<br />
<br />
a = BigInteger.valueOf( Integer.parseInt(str[1]) );a = 3。(看程式註解)<br />
<br />
進入for迴圈,<br />
<br />
sum = 0。<br />
i = 1,sum = sum.add( a.pow( i ).multiply( BigInteger.valueOf( i ) ) );<br />
<br />
sum = 0+3*1 = 3。<br />
<br />
i = 2,sum = sum.add( a.pow( i ).multiply( BigInteger.valueOf( i ) ) );<br />
sum = 3+9*2 = 21。<br />
<br />
i = 3,sum = sum.add( a.pow( i ).multiply( BigInteger.valueOf( i ) ) );<br />
sum = 21+27*3 = 102 。<br />
<br />
<br />
By 小K </div>
KPhttp://www.blogger.com/profile/17803929247953368563noreply@blogger.com0tag:blogger.com,1999:blog-4144959627260631091.post-31110752514910974762014-07-19T00:40:00.001+08:002014-07-19T00:41:13.015+08:00[筆記]解決 explorer.exe 記憶體錯誤大家好,我是小K。<br />
<br />
剛剛在開電腦的時候,忽然跑出 explore.exe 記憶體不能written的錯誤訊息。<br />
<br />
<a name='more'></a><br /><br />
奇怪?早上還好好的,怎麼才過幾的小時就產生了記憶體錯誤?<br />
<br />
於是上網google了一下可能產生記憶體錯誤的原因。總結如下 :<br />
<br />
<span style="color: red;">1. 軟體和系統產生衝突,導致記憶體配置出錯。不管是不能read或不能written。</span> <br />
<br />
<span style="color: red;">2. 中毒</span><br />
<br />
於是我稍微回想一下,早上我做了什麼事......。好像只是安裝了某個軟體,然後就把電腦休眠了,再來就是剛剛開啟電腦就跑出這個錯誤訊息。<br />
<br />
以下是我的解決過程,有遇到同樣問題的人可以參考看看。<br />
<br />
<span style="color: blue;">1. 將 C:\Windows╲Preletch 資料夾下的預讀檔全部刪除。</span><br />
<br />
這是Windows記憶體管理的一部份,可以預先載入應用程式所需的檔案和資料,可以縮短應用程式啟動的時間。<br />
<br />
我們在使用電腦的過程中,難免會去安裝或是卸載一些軟體。但是在Prelrtch下面的預讀檔並不會刪除,導致資料過舊產生Bug。也有可能是某些軟體設計不良而導致的Bug。<br />
<br />
所以就先將這些預讀檔刪除,讓Windows在自動產生這些檔案,藉以修正記憶體錯誤問題。<br />
<br />
<span style="color: blue;">2. 重新註冊dll檔</span><br />
<br />
恩,有時候為了省錢,某些軟體還是會去找一些破解版來代替正版。所以以防萬一,我就將全部dll檔在重新註冊一次。<br />
<br />
步驟如下 :<br />
2_1. 打開命令提示字元,或是在「搜尋」裡輸入「cmd」啟動。<br />
<br />
2_2. 輸入這行指令 <span style="color: blue;">for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1 </span><br />
<span style="color: blue;"> <span style="color: black;">按 enter 執行。</span></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOSSa9l6IuVys7jr1ClU0ziR_d_VHMYDZAjJ_LCiKsxp5WS-CV__gfYxnhmzQaWNvHJawyrtmTBWGQUAiJA2KKqwKkiGRQELmlRnOUF_HLhyphenhyphenapCNHCuta-oOnezidFlxPO9oY2ea4AZ6MR/s1600/%E8%BC%B8%E5%85%A5%E6%8C%87%E4%BB%A4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOSSa9l6IuVys7jr1ClU0ziR_d_VHMYDZAjJ_LCiKsxp5WS-CV__gfYxnhmzQaWNvHJawyrtmTBWGQUAiJA2KKqwKkiGRQELmlRnOUF_HLhyphenhyphenapCNHCuta-oOnezidFlxPO9oY2ea4AZ6MR/s1600/%E8%BC%B8%E5%85%A5%E6%8C%87%E4%BB%A4.png" height="464" width="640" /></a></div>
<br />
<span style="color: blue;"><span style="color: black;">2_3. 會出現以下畫面,當畫面停止代表註冊完畢。</span></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEib1u1vQfE610jR7nC1c-E7_4k5wfytFctTCLdFYw2Yf9tapLlDw5lIwv1qyHyGs2kMIClJLWONLa5VxcHIlcLEsebAxFoWw84T8G8EWcjrvvDudC3JyY52k0AwNzQfCFvXzHuTYxItcpOk/s1600/%E9%87%8D%E6%96%B0%E8%A8%BB%E5%86%8Adll%E6%AA%94.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEib1u1vQfE610jR7nC1c-E7_4k5wfytFctTCLdFYw2Yf9tapLlDw5lIwv1qyHyGs2kMIClJLWONLa5VxcHIlcLEsebAxFoWw84T8G8EWcjrvvDudC3JyY52k0AwNzQfCFvXzHuTYxItcpOk/s1600/%E9%87%8D%E6%96%B0%E8%A8%BB%E5%86%8Adll%E6%AA%94.png" height="418" width="640" /></a> </div>
<br />
<span style="color: blue;"><span style="color: black;">我在做完這兩個動作後,問題就解決了。</span></span><br />
<br />
<span style="color: blue;"><span style="color: black;">一般來說,完成這兩個步驟,記憶體的部分應該有得到修正或改善的效果。所以,如果你的問題沒有獲得改善,可能就是中毒問題,就幫你的電腦掃毒一下吧!</span></span><br />
<br />
<br />
<span style="color: blue;"><span style="color: black;">By 小K </span></span><br />
<br />KPhttp://www.blogger.com/profile/17803929247953368563noreply@blogger.com0tag:blogger.com,1999:blog-4144959627260631091.post-64106739177536919172014-06-19T14:02:00.002+08:002014-06-19T14:03:28.043+08:00[UVA]Nice Licence PlatesUVA 12602 程式解題。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwi3ArDcJEcMuEJeyDguwmlH0lACoA6zfwgt6XHJSudfffcY3weok2PcKkMi6gp01Y9RFCFACs4GrljdHt1UO1Zdu9M8d9OI7pvXHFg9Q1UmpLcTUhWHasZQCdu5e-SlwAmV6lV6RlfkNe/s1600/12602.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwi3ArDcJEcMuEJeyDguwmlH0lACoA6zfwgt6XHJSudfffcY3weok2PcKkMi6gp01Y9RFCFACs4GrljdHt1UO1Zdu9M8d9OI7pvXHFg9Q1UmpLcTUhWHasZQCdu5e-SlwAmV6lV6RlfkNe/s1600/12602.png" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwi3ArDcJEcMuEJeyDguwmlH0lACoA6zfwgt6XHJSudfffcY3weok2PcKkMi6gp01Y9RFCFACs4GrljdHt1UO1Zdu9M8d9OI7pvXHFg9Q1UmpLcTUhWHasZQCdu5e-SlwAmV6lV6RlfkNe/s1600/12602.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"> </a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
解題觀念:<br />
<br />
<a name='more'></a><br />
這題簡單說就是,車牌的格式是固定的。前三位是英文字母,橫槓之後,後四位都是數字。<br />
<br />
如題目所示:ABC-0123。<br />
<br />
那這題題目就是要你:<br />
<br />
1. 將前三位的英文字母,以<span style="color: blue;">賦予編號 0~26</span>( EX:0 = A、1 = B、2 = C、......25 = Z ),<br />
並依照所在的位置<span style="color: blue;">做運算</span>,總合起來。<br />
( EX:A=( 0 * 26^2 ) + B=( 1* 26^1 ) + C=( 2* 26^0 ) = 28 ) <br />
<br />
2. <span style="color: blue;">減掉後面4位的數字</span> ( 0123 )。<br />
<br />
3. 判斷兩數之差的<span style="color: blue;">絕對值是否大於100</span>,如果是則輸出not nice;如果否則輸出nice。 <br />
<br />
沒了。<br />
<br />
所以重點就在於,如何將前三位的英文字母分別規劃好數字,做運算。<br />
<br />
由於輸入的資料格式是固定的,所以在處理方面相對就簡單很多。<br />
<br />
<br />
<br />
解題步驟:<br />
<br />
宣告整數n,輸入測資個數。<br />
<br />
宣告字串str,讓使用者輸入測資。 <br />
<br />
宣告整數sum1,存放三個字母的總和;宣告整數sum2,存放後三位數字的值。<br />
<br />
for迴圈,次數為n次。<br />
<br />
抓字串前三位字元( <span style="color: blue;"><b>str.chartAt() </b></span>),轉為ASCII碼後,減掉A的ASCII碼( str.charAt()<b><span style="color: blue;"> - 'A'</span></b> )做運算。(因為一定是字母所以可以直接抓字元);並將結果存放於sum1。<br />
<br />
<span style="color: red;"><b>*</b>以A的ASCII碼作為基準,將每個字母的ASCII碼減掉A的ASCII碼,其值就等於編號。</span><br />
[ A = 65 - 65 = 0;B = 66 - 65 = 1;......Z = 90 - 65 = 25 ] <br />
<br />
這裡有用到substring的method,用來回傳指定範圍內的字串。所以我就用它,將字串第四位候的字串全部抓回來( <span style="color: blue;"><b>str.substring(4) </b></span>),並轉為整數 ( <b><span style="color: blue;">Integer.parseInt() </span></b>);存放到sum2。<br />
<br />
接下來進入判斷式,判斷兩數相減的絕對值是否大於100:<br />
<br />
如果是,則輸出not nice;如果否,則輸出nice。 <br />
<br />
最後記得將sum1和sum2初始化。<br />
<br />
<br />
<br />
EX:<br />
<br />
1<br />
ABC-0123 <br />
<br />
n = 1。<br />
<br />
str = ABC-0123。<br />
<br />
sum1+=( 'A' - 'A' )*26*26 = (65-65)*26*26 = 0<br />
sum1+=( 'B' - 'A' )*26 = (66-65)*26 = 26<br />
sum1+=( 'C' - 'A' ) = (67-65) = 2<br />
<br />
此時,sum1的值為26+2 = 28。<br />
<br />
sum2+=Integer.parseInt( "0123" ),sum2 = 123。<br />
<br />
if( |28 - 123| >100 ),95 > 100,不符合。<br />
<br />
進入else,輸出nice。 <br />
<br />
<br />
By 小K<br />
<br />KPhttp://www.blogger.com/profile/17803929247953368563noreply@blogger.com0tag:blogger.com,1999:blog-4144959627260631091.post-40288061690226692162014-06-19T01:37:00.003+08:002014-06-19T01:37:24.904+08:00[UVA]Divide, But Not Quite Conquer!UVA 10190、CPE 10419 程式解題。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhm50LG7pwD53-b0NQq95tFID_kUdYQ_IJDJP49bD8tEChOFk71BhDG3XUJGy8ii2jTFnt2wiD2MIM86Jjp9U5l3-X9y7Un1Nk0Kt30tfrWkYf4yDmEM02LBFj7J8JApXxaGZnQd2MRAEGc/s1600/10190.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhm50LG7pwD53-b0NQq95tFID_kUdYQ_IJDJP49bD8tEChOFk71BhDG3XUJGy8ii2jTFnt2wiD2MIM86Jjp9U5l3-X9y7Un1Nk0Kt30tfrWkYf4yDmEM02LBFj7J8JApXxaGZnQd2MRAEGc/s1600/10190.png" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
解題觀念:<br />
<br />
<a name='more'></a><br />
這題主要的計算就是<span style="color: blue;">除法</span>,只是條件比較多。<br />
<br />
輸入兩個數,比如125、5。用125除以5,除到後面的結果商為1,餘數為0時,就輸出所有商數( 125 25 5 1 );反之則輸出Boring!。<br />
<br />
要注意的是,最後的<span style="color: blue;">商數一定要為1,餘數為0</span>;如果最後的商數不是1,也是要輸出Boring!<br />
<br />
比如40 2。除到後面商數為5,餘數為0。(因為如果再算下去就會出現餘數,所以只能算到5)<br />
最後的商數是5不是1,所以輸出"Boring!"。 <br />
<br />
此題重點在於,<span style="color: red;">如何判斷兩數相除的結果為1,並輸出計算過程。</span><br />
<br />
也許有人會想到,每除一次,就輸出一次商數。但這樣會有一個問題:如果除到後面發現商數不為1呢?<br />
<br />
比如:40 20 10 5...<br />
<br />
電腦印到5之後,發現商數不為1,所以印出Boring!<br />
<br />
則你輸出的結果就會變成:40 20 10 5 Boring! =><span style="color: red;">這樣就不符合題目條件啦!</span><br />
<br />
所以這塊就是本題的重點!最花心思的地方囉~<br />
<br />
<br />
<br />
解題步驟:<br />
<br />
宣告StringBuffer字串sb,處理字串輸出比較方便。(因為我<b>直接用String有逾時問題</b>)<br />
<br />
宣告字串str,讓使用者輸入。<br />
<br />
宣告字串陣列s1[ ],將字串str分割後(<span style="color: blue;"><b> str.split(" ") </b></span>),存入陣列s1。<br />
<br />
宣告整數x,y,將陣列裡的字串轉為整數( <span style="color: blue;"><b>Integer.paraseInt()</b></span> ),分別存給x,y。 <br />
<br />
之後進入while迴圈,宣告整數陣列ansArray[],存放Function-divid()的值。<br />
<br />
另寫Function-divid(),引數為整數x,y,用途為<span style="color: red;">計算兩數相除</span>。<br />
<br />
======================Function的內容========================<br />
<br />
用LinkedList宣告一個物件ans,用來存放計算過程。<br />
<br />
宣告一個boolean變數flag,判斷計算過程當中的餘數是否為0。<br />
<br />
while迴圈,執行條件為「被除數大於1」,計算兩數相除。<br />
<br />
只要計算過程當中<span style="color: blue;">有一次餘數不為0,則flag = false,並跳出迴圈。</span><br />
<br />
否則就繼續計算,並將商數存入ans。( <span style="color: blue;"><b>ans.add() </b></span>)<br />
<br />
跳出迴圈之後,判斷flag是否為true。如果是true,則表示最後商數為1,餘數為0。<br />
<br />
在ans後面加入1 ( <span style="color: blue;"><b>ans.add(1)</b></span> ),並宣告整數陣列ansArray[],大小為ans的長度,將ans裡的數全部複製一份給ansArray,return回去。<br />
<br />
<span style="color: red;"><b>(*</b></span> <b><span style="color: red;">為甚麼要加1?</span> </b><br />
因為在上面while迴圈的執行條件為<b>被除數大於1</b>,所以當被除數為1時,<br />
就會跳出while迴圈,就不會執行到ans.add(),所以在後面就要補加上去。<b><span style="color: red;">)</span></b><br />
<br />
如果flag為false,代表最後商數不為1,則retuen int[0]。(陣列長度為0)<br />
<br />
==========================================================<br />
<br />
從Function回來到主程式後,判斷ansArray的長度時否為0。<br />
<br />
如果是,就輸出Boring! (代表flag = false,return回來的陣列長度為0)<br />
<br />
如果不是,則進入for迴圈,將ansArray裡的值加進字串sb。( <span style="color: blue;"><b>sb.append()</b></span> )<br />
<br />
每加入一個數後,要<span style="color: blue;">加入一個空格</span>。( <span style="color: blue;"><b>sb.append(" ")</b></span> ) (為甚麼要空格? 看題目的範例輸出~ )<br />
<br />
全部的數都加進去後,最後要<span style="color: blue;">換行</span>。( <span style="color: blue;"><b>sb.append("\n")</b></span> )<br />
<br />
將字串sb印出,印出完畢之後要記得將sb<span style="color: blue;">清空</span> ( <span style="color: blue;"><b>sb.delete()</b></span> ),讓下一組資料存入。<br />
<br />
<br />
<br />
EX :<br />
<br />
125 5<br />
<br />
str = 125 5。<br />
<br />
s1[0] = 125;s1[1] = 5。<br />
<br />
x = Integer.parseInt(125) = 125;y = Integer.parseInt(5) = 5。<br />
<br />
ansArray[] = divid(125,5)。<br />
<br />
============進入Function divid==============<br />
<br />
while(125>1),成立,<br />
<br />
if(125%5==0),成立,ans.add(125),x = 125/5 = 25;<br />
<br />
while(25>1),成立,<br />
<br />
if(25%5==0),成立,ans.add(25),x = 25/5 = 5;<br />
<br />
while(5>1),成立,<br />
<br />
if(5%5==0),成立,ans.add(5),x = /5 = 1;<br />
<br />
while(5>1),不成立,跳出while迴圈。<br />
<br />
進入判斷式,if(flag==true),成立。<br />
<br />
ans.add(1),(此時ans的內容為 125 25 5 1;ans.size() = 4)<br />
<br />
int ansArray[] = new int[4]。進入for迴圈,進ans的數複製一份給ansArray。<br />
<br />
ansArray[0] = (int)ans.get(0) = 125; <br />
ansArray[1] = (int)ans.get(1) = 25;<br />
ansArray[2] = (int)ans.get(2) = 5;<br />
ansArray[3] = (int)ans.get(3) = 1; <br />
<br />
return ansArray;<br />
==============跳出Function 回主程式================<br />
<br />
進入判斷式,if(ansArray.length==0),不符合。(ansArray.length = 4)<br />
<br />
進入else,進入for迴圈,將ansArray的內容加入字串sb。<br />
<br />
i = 0,if(i>0),不符合,sb.append(125);<br />
i = 1,if(i>0),符合,sb.append(" "),sb.append(25); <br />
i = 2,if(i>0),符合,sb.append(" "),sb.append(5);<br />
i = 3,if(i>0),符合,sb.append(" "),sb.append(1);<br />
<br />
跳出for迴圈,sb.append("\n")。<br />
<br />
印出sb,125 25 5 1<br />
<br />
將sb清空,sb.delete(0,4)。<br />
<br />
<br />
後記:<br />
覺得這次似乎寫的比較細了點......<br />
用了一些API,如果看不太懂在留言問我,或是google一下囉~<br />
關於一些API教學,以後有時間再來整理一篇,關於解題比較會用到的來做介紹。<br />
<br />
<br />
By 小K <br />
<br />
<br />
<br />
<br />
<br />
KPhttp://www.blogger.com/profile/17803929247953368563noreply@blogger.com1tag:blogger.com,1999:blog-4144959627260631091.post-69474719990052367512014-06-15T23:21:00.003+08:002014-06-16T18:07:04.103+08:00[分享]想要邊看線上影片邊打報告?-PopVideo幫你!<span style="font-size: small;">大家好,我是小K。</span><br />
<span style="font-size: small;"><br /></span>
<span style="font-size: small;">今天要分享一款個人覺得還蠻好用的FireFox套件-<a href="https://addons.mozilla.org/zh-TW/firefox/addon/popvideo/"><span style="color: blue;">PopVideo</span></a>。</span><br />
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: small;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZUoQS21ibrexZqI1QYGGFjHZPX2qnhyphenhyphen8grvO2qgnnzUN1MkcmsmuBWuXKlaXNkYu5mCi3a6zs2TzpLzGwhkTTXfXS7vlSWRXDlJO75lPTQuJPNLc2C6q00nh_Yaz7BNBfDHrBg69q79c-/s1600/PopVideo.png" height="314" width="640" /> </span></div>
<span style="font-size: small;"><br /></span>
<br />
<a name='more'></a><span style="font-size: small;"><br /></span>
<span style="font-size: small;">這款套件能幫你將線上影片彈出一個單獨的視窗,可以獨立操作。而且任何線上影音網站都辦得到 !以下是我實際測試的3個網站。</span><br />
<span style="font-size: small;"><br /></span>
<span style="font-size: small;">1. Youtube</span><br />
<span style="font-size: small;">按下<span style="color: red;">紅色框框</span>裡的小按鈕,影片就會彈出一個獨立視窗。 </span><br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-size: small;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgufxsGx2x_kDcv9afvNPfh76LpmNPgtHquTiSEkLXLdXmN9Eudh2O3oq__4QooEUhnZWgNeDLVqMmdpa6tincn-f0mvK_5VB0-gk9nH1IT6jLI3HDKJc8sgfkGFmxOTo1YDgyz92RgYGPd/s1600/youtube.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgufxsGx2x_kDcv9afvNPfh76LpmNPgtHquTiSEkLXLdXmN9Eudh2O3oq__4QooEUhnZWgNeDLVqMmdpa6tincn-f0mvK_5VB0-gk9nH1IT6jLI3HDKJc8sgfkGFmxOTo1YDgyz92RgYGPd/s1600/youtube.png" height="199" width="640" /></a></span></div>
<span style="font-size: small;"><br /></span>
<span style="font-size: small;">2.優酷網</span><br />
<span style="font-size: small;">如果你看的到對岸那邊的影片,那PopVideo也會幫你彈出來。 </span><br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-size: small;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheN8gDBpf7_Bd_M_Zlzfh0cZKxKIj6QKn2Q9ZaA0XKOOhn6juovVQXynf6QJm9vVH1tM5AzrA2GMYnwGStD2oDgqOY8apxNzm7HDCz6OmX39nM0LEhNgwlq3p7xorbcj1GN62_QYxPJUAJ/s1600/%E5%84%AA%E9%85%B7%E7%9A%84.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheN8gDBpf7_Bd_M_Zlzfh0cZKxKIj6QKn2Q9ZaA0XKOOhn6juovVQXynf6QJm9vVH1tM5AzrA2GMYnwGStD2oDgqOY8apxNzm7HDCz6OmX39nM0LEhNgwlq3p7xorbcj1GN62_QYxPJUAJ/s1600/%E5%84%AA%E9%85%B7%E7%9A%84.png" height="310" width="640" /></a></span></div>
<span style="font-size: small;"><br /></span>
<span style="font-size: small;">3.TED</span><br />
<span style="font-size: small;">我有時候會聽TED練聽力,所以不想一直看著影片的字幕,但有時候如果跟不上時還是需要點回去頁面看一下,這樣子切換就有點麻煩。這個套件就讓我方便很多。</span><br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-size: small;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOJHJ-gjvJT4eQgc4vzKXKF5yHScNnyATCozmNq73fkPJh4HqJtc0qvSHaCM-I7O7PFSVmt2MOMpSXY9S8UsvNXDQp2BG7ljx3qC_jHYHJqRMqqy0L29zG3FV717vksAxMJSiIDaurmyfh/s1600/ted.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOJHJ-gjvJT4eQgc4vzKXKF5yHScNnyATCozmNq73fkPJh4HqJtc0qvSHaCM-I7O7PFSVmt2MOMpSXY9S8UsvNXDQp2BG7ljx3qC_jHYHJqRMqqy0L29zG3FV717vksAxMJSiIDaurmyfh/s1600/ted.png" height="354" width="640" /></a></span></div>
<span style="font-size: small;"><br /></span>
<span style="font-size: small;"><br /></span>
<span style="font-size: small;">接下來,我以Youtube的影片當例子。</span><br />
<span style="font-size: small;"><br /></span>
<span style="font-size: small;">彈出來的視窗就會像這樣。將游標移上去,會有一小排列表。 </span><br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-size: small;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUxZhnpQjO3dhf35KHDtRm34WnIUwmrxdbHe5kFKweRHbMGgG5HTlHEQczmLGmCgqEKZGldsCtte1xj7L9vqAt4eZOqFUN5V7sFKpOj29U0ofovdS-nH_gbB5xQSgUVP48xdLd75TC7b7Q/s1600/%E5%AF%A6%E6%B8%AC2.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUxZhnpQjO3dhf35KHDtRm34WnIUwmrxdbHe5kFKweRHbMGgG5HTlHEQczmLGmCgqEKZGldsCtte1xj7L9vqAt4eZOqFUN5V7sFKpOj29U0ofovdS-nH_gbB5xQSgUVP48xdLd75TC7b7Q/s1600/%E5%AF%A6%E6%B8%AC2.png" height="401" width="640" /></a></span></div>
<span style="font-size: small;"><br /></span>
<span style="font-size: small;">最右邊的小圖釘的圖示,可以固定視窗永遠在最上層。按下去之後,不管你切換到哪個視窗, 它都不會跑不見囉!</span><br />
<span style="font-size: small;"><br /></span>
<span style="font-size: small;">(切換到 Blooger寫文章,它會乖乖待在旁邊不亂跑)</span><br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-size: small;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6WZAD4Sj1b02pqqCBbY5RVNS0ML65lFCcg1ZIx3A-ZbSJgySPIjlZX9CyS6RCrwm8yfW8UIbx6sNNy30oXrF8IjtC0GdMh2LLj1Ws15bnDT_GHBaFqXpMvdv1XRl4Ji55P8Ha1T2QMTIg/s1600/%E5%AF%A6%E6%B8%AC.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6WZAD4Sj1b02pqqCBbY5RVNS0ML65lFCcg1ZIx3A-ZbSJgySPIjlZX9CyS6RCrwm8yfW8UIbx6sNNy30oXrF8IjtC0GdMh2LLj1Ws15bnDT_GHBaFqXpMvdv1XRl4Ji55P8Ha1T2QMTIg/s1600/%E5%AF%A6%E6%B8%AC.png" height="248" width="640" /></a></span> </div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: small;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: small;">因為我在看文章或是寫報告時,會有開Youtube聽音樂的習慣。所以我通常會將視窗縮的小小的,然後擺在角落,這樣要點Repeat比較方便。(笑)</span></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-size: small;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7YPbKRKojub19w1BjwMFZZF_RJofGLQfbpDV5KG40lDbg4R4fiAgXAlpQ0kwiKO802OShQ72KknSCCGZf9kVxwp2qthIYymxZtEsUkDgcTTcFzLeGGKaow4OFtKmlhPp4R2F5nbzr4mNz/s1600/%E5%AF%A6%E6%B8%AC3.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7YPbKRKojub19w1BjwMFZZF_RJofGLQfbpDV5KG40lDbg4R4fiAgXAlpQ0kwiKO802OShQ72KknSCCGZf9kVxwp2qthIYymxZtEsUkDgcTTcFzLeGGKaow4OFtKmlhPp4R2F5nbzr4mNz/s1600/%E5%AF%A6%E6%B8%AC3.png" height="224" width="640" /></a></span></div>
<span style="font-size: small;"><br /></span>
<span style="font-size: small;">當然你也可以將影片或是音樂下載下來,然後用撥放器撥放,還可以自動重複撥放。但是我這人比較懶惰,除非哪天心血來潮,不然通常我直接去Youtube聽。</span><br />
<span style="font-size: small;"><br /></span>
<span style="font-size: small;">這套件讓有習慣練打逐字稿的人也非常方便。直接將影片Pop出來,就不用那麼辛苦還要去調Browser或是Word的視窗。</span><br />
<br />
<span style="font-size: small;">或者, 因為用Youtube就要用到網頁,<span style="color: blue;">網頁點著點著不知不覺會點到FB去,然後課本就慢慢的被挪到旁邊......</span></span><br />
<br />
<span style="font-size: small;">用這個套件讓你只能看到影片的視窗,或許可以幫你專注於課本上?(笑) </span><br />
<span style="font-size: small;"><br /></span>
<span style="font-size: small;">好!以上是今天小K的分享。謝謝各位。</span><br />
<span style="font-size: small;"><br /></span>
<span style="font-size: small;">By 小K</span><br />
<br />KPhttp://www.blogger.com/profile/17803929247953368563noreply@blogger.com0tag:blogger.com,1999:blog-4144959627260631091.post-80253290476609260772014-04-09T00:29:00.003+08:002014-06-17T15:39:49.796+08:00[UVA]Doom's Day AlgorithmUVA 12019、CPE 22801 程式解題。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNzwNCSKEvkU6TF7yj5vSddWKbqc5aWGoWhTg2QvFtw7Dz6o_QDawM_fQheO3nC1Nva8ouDbDtl1ISo-DTuIsSa_PAdkYU-nBf6ieHhKhuZuAQO09rijr45C-oSmBtDrNgehd5ulW93SRZ/s1600/uva+12019.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNzwNCSKEvkU6TF7yj5vSddWKbqc5aWGoWhTg2QvFtw7Dz6o_QDawM_fQheO3nC1Nva8ouDbDtl1ISo-DTuIsSa_PAdkYU-nBf6ieHhKhuZuAQO09rijr45C-oSmBtDrNgehd5ulW93SRZ/s1600/uva+12019.png" height="404" width="640" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
解題觀念 :<br />
<br />
<a name='more'></a>這題主要就是輸入日期,要你找出<span style="color: blue;">那一天是星期幾</span>。<br />
<br />
日期範圍是2011一整年,所以就先找出2011年1月1號是星期幾,並以那一天作為起始點。<br />
<br />
<span style="color: blue;">先算出總天數</span>(比如 : 2 28,經過59天),再<span style="color: blue;">用取餘數</span>的方式(7天一循環)找出這一天星期幾。<br />
<br />
然後,一行輸入為一筆測資,而且是以"<span style="color: red;">空白</span>"分開月分和天數,所以想一想<span style="color: red;"><b>要如何處理空白,然後個別處理呢?</b></span><br />
<br />
<br />
解題步驟 :<br />
<br />
宣告字串陣列week,建立星期幾(?)對照表。<br />
<br />
宣告整數陣列day,建立月份天數對照表。<b>(0月份設為0天)</b><br />
<br />
宣告字串陣列str,等等要用來處理測資。<br />
<br />
宣告整數D,累計經過的總天數;宣告整數ans,最後用來找出星期幾。<br />
<br />
整數n,使用者輸入共有n筆測資。<br />
<br />
<b>字串space,用來<span style="color: red;">讀取n後面的空白</span>。</b><br />
(因為<span style="color: blue;"><b> .nextLine()</b></span> 可以連空白一起讀取,所以當我們輸入完數字n按下enter那一瞬間,n後面的那一格空白會被.nextLine()讀取到,造成字串無法輸入,所以必須在輸入字串之前,先用一次.nextLine(),將空白讀取掉。) <br />
<br />
簡單來說,就是nextInt()和nextLine()並用會有一些狀況,其解決方法就是要用兩次nextLine(),才能輸入字串。<br />
<br />
之後設定for迴圈,中止條件為跑n次為止。<br />
<br />
接下來就講到,<span style="color: blue;">如何將一行資料,分割成兩筆資料啦!</span><br />
<br />
<b>用空白分割字串</b>(<span style="color: blue;"><b>.split(" ")</b></span>),變成兩筆資料,同時存入str陣列裡面。<br />
(ex : 2 28。str[0] = 2;str[1] = 28。)<br />
<br />
之後再設定另一個for迴圈,用來累加<span style="color: blue;">前幾個月</span>的天數。<br />
(ex : 2 28。已經過一月分了,所以必須加上一月份的天數,但是要注意 : <b><u>不用加2月的天數!因為2月還沒過啊!</u></b>)<br />
<br />
(<b><span style="background-color: yellow;">*</span></b>Integer.parseInt(str[0]) : 因為str[0]為字串,所以必須將它轉為int。 )<br />
<br />
累加完月數後,再把多出來的天數(28天),加上去,存放到D。<br />
<br />
之後再用取餘數的方式(asn = D%7)找出那一天是星期幾,利用陣列week對照(week[ans])。<br />
<br />
最後記得,<span style="color: red;">初始化</span>。 <br />
<br />
<br />
EX :<br />
<br />
1<br />
2 28<br />
<br />
n = 1。(這我不多說了!)<br />
<br />
str = "2 28";用.split(" ")分割 => str[0] = 2、str[1] = 28。<br />
<br />
進入for迴圈,起始值為0,跑到1月份為止。 <br />
( Integer.parseInt(str[0])-1 => 2 - 1 = 1)<br />
<br />
D = D + day[1] = 0 + 31 = 31,跳出迴圈。<br />
<br />
D = D + Integer.parseInt(str[1]) = 31 + 28 = 59。<br />
<br />
ans = 59 % 7 = 3。<br />
<br />
week[3] = Monday。<br />
<br />
印出 Monday。<br />
<br />
<br />
By 小K<br />
<br />
<br />
<br />KPhttp://www.blogger.com/profile/17803929247953368563noreply@blogger.com0tag:blogger.com,1999:blog-4144959627260631091.post-86580362023147985882014-04-08T17:35:00.000+08:002014-06-17T15:40:05.114+08:00[UVA] Ones<span style="font-size: small;">UVA 10127、CPE 10532 程式解題。</span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4p8i6huHyCCiaUf0dA-FDJWVkRSKlzKsj3X1WeSboHoWhUUogWOhOf97Kl_5UTQQxhRJy1_LTL482jY8w_I22pm-f9HRWbI2HdktikpxpdwPdBR3gsz_XWOtG5tS3PBZr8Knx-yb3UP3H/s1600/uva+10127.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4p8i6huHyCCiaUf0dA-FDJWVkRSKlzKsj3X1WeSboHoWhUUogWOhOf97Kl_5UTQQxhRJy1_LTL482jY8w_I22pm-f9HRWbI2HdktikpxpdwPdBR3gsz_XWOtG5tS3PBZr8Knx-yb3UP3H/s1600/uva+10127.png" height="470" width="640" /></a></div>
<br />
<br />
解題觀念 :<br />
<br />
<a name='more'></a>這題嘛......我想一下要怎麼解釋(笑)<br />
<br />
主要就是去找出一個數可以被使用者所輸入的數字整除。<br />
<br />
要找什麼數字呢? <span style="color: blue;">全部都是1的數。</span> ((蛤?!<br />
<br />
比如說,使用者輸入3。<br />
<br />
好從1開始,1不能被3整除,繼續往下變11,11也不能被3整除,繼續往下變111。喔!111可以被3整除了!<br />
<br />
讓我們來數一下<span style="color: blue;">總共有幾個1</span>呢?<br />
<br />
3個!答案就是3。<br />
<br />
所以,這題主要是考,<span style="color: red;">如何從1算到111的演算法</span>。<br />
<br />
<br />
<br />
解題步驟 :<br />
<br />
因為心機測資問題(?),所以如果用 int 的話,會有<u><b>溢位</b></u>的狀況發生。<br />
<br />
所以某K就直接用BigInteger來解題了。<br />
<br />
用BigInteger宣告n,讓使用者輸入。<br />
<br />
用BigInteger宣告sum=1,等一下用來計算1、11、111、1111...時要用的。<br />
<br />
用 int 宣告count = 1,統計「1」的個數。<br />
(將初始值設為1的原因,是因為我們開頭就從"1"開始算。)<br />
<br />
我看過很多人會用字串輸入後,再把他轉成BigInteger,其實不用這麼麻煩。<span style="color: blue;">BigInteger是可以直接用Scanner掃描的</span>,(<span style="color: blue;"><b>.nextBigInteger()</b></span>)。<br />
<br />
設定while迴圈,如果sum不能被n整除,則繼續計算。<br />
<br />
好啦~終於寫到最重要的演算法了。 我是這樣寫的。<br />
<br />
1 -> 11,<span style="background-color: yellow;"><b>(1x10)+1</b></span> = 11。<br />
<br />
也就是說 : <br />
<br />
將sum x10(<b><span style="color: blue;"> .multiply(BigInteger.TEN)</span></b> )後,加1(<span style="color: blue;"><b>.add(BigInteger.ONE) </b></span>)。<br />
<br />
每計算一次就將count加1。<br />
<br />
最後印出count。<span style="color: red;">記得將所有值都初始化喔!</span><br />
<br />
<br />
EX :<br />
<br />
3<br />
<br />
n = 3。<br />
<br />
while(1.mod(3) != 0),符合,進入迴圈計算 :<br />
<br />
sum = 1 x 10 + 1 = 11;count = 2。<br />
<br />
while(11.mod(3) != 0),符合,繼續進入迴圈計算 :<br />
<br />
sum = 11 x 10 + 1 = 111 ;count = 3。<br />
<br />
while(111.mod(3) !=0),不符合,跳出迴圈。<br />
<br />
印出 3。<br />
<br />
<br />
By 小K<br />
<br />
<br />
<br />KPhttp://www.blogger.com/profile/17803929247953368563noreply@blogger.com0tag:blogger.com,1999:blog-4144959627260631091.post-31627009832712230032014-04-05T14:33:00.001+08:002014-06-17T15:40:19.894+08:00[UVA]What is the Median?UVA 10107、CPE 10527 程式解題。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAZwcM00y6cP36j9UU9xfjUZ2aRbeuT0y7avt-2FzM6q0NWXyvksyQvcDU3CW46yBZ-Bx2CT4vbhLm03HK3iZg94qMRFuBLetmPRBhmDGUuopQ5Gpfxpgazj0LNLMdXmz9vmgdjnZt5t3j/s1600/uva+10107.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAZwcM00y6cP36j9UU9xfjUZ2aRbeuT0y7avt-2FzM6q0NWXyvksyQvcDU3CW46yBZ-Bx2CT4vbhLm03HK3iZg94qMRFuBLetmPRBhmDGUuopQ5Gpfxpgazj0LNLMdXmz9vmgdjnZt5t3j/s1600/uva+10107.png" height="435" width="640" /></a></div>
<br />
<br />
<br />
解題觀念 :<br />
<br />
<a name='more'></a><br />
這題很簡單(雖然是二星題)。就是要求中位數,也就是說需要用到<span style="color: blue;">排序</span>。 <br />
<br />
每輸入一個數字,就要將其插入陣列裡面。<br />
<br />
所以<span style="color: red;">不是一次輸入完畢哦!</span>是要<span style="color: blue;">逐次輸入,逐次插入</span>。<br />
<br />
還有如果項數<span style="color: red;">只有一項時,也要印出</span>。<br />
<br />
<br />
<br />
解題步驟:<br />
<br />
宣告<span style="color: blue;">ArrayList</span> 物件 array,用來存放數字,也<span style="color: blue;">方便等下直接用sort()排序</span>。<br />
<br />
宣告整數 n ,輸入數字;宣告整數 median,存放中位數。<br />
<br />
將每次所輸入的數字 n ,用<b><span style="color: blue;">array.add(n)</span></b> ,將 n 存入array裡面。<br />
<br />
先判斷array大小是否為一,如果是,則直接印出。<br />
(因為題目要求,即使只有一個數字也要印出中位數。)<br />
<br />
如果否,則進入else。<br />
<br />
在計算中位數之前,要記得先做排序 <b><span style="color: blue;">Collections.sort()</span></b>。<br />
(小K原本是用 Arrays.sort() 做排序,但不知道為什麼卻一直逾時......後來改用Collection呼叫就Accept了。 其速度差的原因有待查詢。)<br />
<br />
至於為甚麼可以用Collection呼叫,請參考這張圖。<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://img.blog.csdn.net/20131001102832140?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWVqaW53ZWkxMjIw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://img.blog.csdn.net/20131001102832140?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWVqaW53ZWkxMjIw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" height="200" width="400" /></a></div>
<br />
如果看了圖還是不知道為什麼,表示你Java基礎知識還不夠,<b><span style="background-color: yellow;">資料結構</span></b>要加強喔! <br />
<br />
判斷array項數為奇數還是偶數。(因為奇、偶數求中位數的方法不一樣,對吧?!)<br />
<br />
再來就是用<b><span style="color: blue;">array.get()</span></b> ,取出array裡面指定位置的值,做計算。 <br />
<br />
至於求中位數的方法,大家在小學或國中都有學過,所以演算法部份我就不說明了。<br />
(或是看EX的step by step 解說。)<br />
<br />
最後,<span style="color: red;">記得median要重新初始化。</span><br />
<br />
<br />
EX :<br />
<br />
1<br />
3<br />
4<br />
60<br />
70<br />
50<br />
2<br />
<br />
n = 1 => array.add(1)。<span style="color: #6aa84f;"> //[1]</span><br />
<br />
if(array.size()==1) => 符合;直接印出1。<br />
<br />
n = 3 => array.add(3)。<span style="color: #6aa84f;"> //[1,3]</span><br />
<br />
if(array.size()==1) => 不符合;進入else。<br />
<br />
先做排序動作 => Collection.sort(),[1.3]。<br />
<br />
判斷size為奇數項還是偶數項 => 為偶數項;if(array.size()%2==0),符合。<br />
<br />
宣告整數m1,儲存array.size()/2 -1那個位置的數值 = 1。<br />
<br />
宣告整數m2,儲存array.size()/2那個位置的數值 = 3。<br />
<br />
中位數 median = (m1 + m2) /2 = (1+3) /2 = 2。<br />
<br />
接下來繼續輸入。<br />
<br />
n = 4 => array.add(4)。 //[1,3,4]<br />
<br />
if(array.size()==1) => 不符合;進入else。<br />
<br />
先做排序動作 => Collection.sort(),[1.3,4]。<br />
<br />
判斷size為奇數項還是偶數項 => 為奇數項;else if(array.size()%2!=0),符合。<br />
<br />
直接印出中位數 array.size()/2,3/2 = 1.5,<span style="color: blue;">會直接取整數1</span>,印出數列位置1的那個值 = 3。<br />
<br />
(其他繼續以此類推) <br />
<br />
<br />
By 小KKPhttp://www.blogger.com/profile/17803929247953368563noreply@blogger.com0tag:blogger.com,1999:blog-4144959627260631091.post-20726607303849105812014-03-17T17:50:00.000+08:002014-06-17T15:40:34.759+08:00[UVA]WERTYUCPE10412、UVA 10082 程式解題。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtR3yloUBe_xzGMGKzZdXdb85vcaaCXEEixa3fP2OeATc7sLY3nz4DMkv85ywVUEjvnk9eNx3jIWN2P321WaZJPfhVia6OQrhRCvK-vulilrbXFL9dNeviXz5qclyylyRHjEGL7KrWjXAU/s1600/uva+10082.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtR3yloUBe_xzGMGKzZdXdb85vcaaCXEEixa3fP2OeATc7sLY3nz4DMkv85ywVUEjvnk9eNx3jIWN2P321WaZJPfhVia6OQrhRCvK-vulilrbXFL9dNeviXz5qclyylyRHjEGL7KrWjXAU/s1600/uva+10082.png" height="372" width="640" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
解題觀念 :<br />
<br />
<a name='more'></a><br />
這題和我之前寫的 <a href="http://kpeggy.blogspot.tw/2013/07/javadecode-mad-man.html">UVA 10222 Decode the Mad Man </a>非常類似,而且還比他簡單易點。<br />
<br />
簡單來說,就是要你將所有輸入的字母,全部<span style="color: blue;">往左移一格</span>(對照鍵盤),在印出。<br />
<br />
比如你輸入F,對照鍵盤,F左邊一格的字母為D,則要輸出D。<br />
<br />
題目中有特別註明說,<span style="color: red;">不會有QAZ這三個字母</span>;且輸入的<span style="color: red;">測資全為大寫</span>,所以不需做大小寫轉換。<br />
<br />
要注意的是,字串中會有空白,要<span style="color: blue;">記得處理空白的部分</span>。<br />
<br />
<br />
<br />
解題步驟 :<br />
<br />
先用字串 key ,建立鍵盤對照表。<br />
<br />
因為字串中有空白測資,所以讀取時必須用nextLine()讀取完整字串。<br />
<br />
宣告整數 index,用來存放字母在鍵盤表的位置。<br />
<br />
用for迴圈去抓取每一個字母,尋找他們在鍵盤表中的哪一個位置 (<span style="color: blue;"><b>indexof()</b></span>) ,並存放到index。<br />
<br />
如果有找到,則將當前所在位置往左移一格 (<span style="color: blue;">index - 1</span>) ,並印出。<br />
<br />
如果沒有找到,則為<b>空白字元</b>,直接印出即可。<br />
<br />
<br />
<br />
EX :<br />
<br />
O S, GOMR YPFSU/<br />
<br />
進入for迴圈,index = 8。<br />
<br />
進入if判斷,index = 8 != -1,符合,印出鍵盤表第7個字元'I';<br />
<br />
在進入for迴圈,index = -1。<br />
<br />
進入if判斷,index = -1,不符合,直接印出空白字元。<br />
<br />
(後略,以此類推)<br />
<br />
整個字串跑完後,再換行。<br />
<br />
<br />
By 小K KPhttp://www.blogger.com/profile/17803929247953368563noreply@blogger.com0tag:blogger.com,1999:blog-4144959627260631091.post-76255730717640800352014-03-11T17:54:00.002+08:002014-06-17T15:40:45.663+08:00[UVA]Fibonaccimal BaseCPE10401、UVA 948 程式解題。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg94d7gH0Fwknq_dA9W9OCve79dVYVmQhOLfB8ZmZ8507xFrCeXMKULVenVhlz3LTbL194VbTiqbFT6OGqeqrMadM4h8_N0p9Cxo04_AJNa5X704m9daw4Nuu5vjJKfCXEal3F3ENN3yZYU/s1600/uva+948.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg94d7gH0Fwknq_dA9W9OCve79dVYVmQhOLfB8ZmZ8507xFrCeXMKULVenVhlz3LTbL194VbTiqbFT6OGqeqrMadM4h8_N0p9Cxo04_AJNa5X704m9daw4Nuu5vjJKfCXEal3F3ENN3yZYU/s1600/uva+948.png" /> </a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
解題觀念 :<br />
<br />
<a name='more'></a><br />
這題是<span style="color: blue;">費式數列</span>的應用。所以一開始就要先把費式數列建立起來。<br />
<br />
將數字拆解成可以用費式數列中的數字做相加,EX : 17 = 1 + 3 + 13。<br />
<br />
然後再將這個組合,<span style="color: blue;">轉換成只用0和1來表示</span>,費式數列中有用到的數字就印出1,沒有用到就印出0。(看題目中的 Figure2 。) <br />
<br />
題目中有特別說明,<span style="color: red;">數字大小不會超過100000000</span>,所以<span style="color: blue;">費式數列的大小設定到38</span>就夠了。<br />
<br />
<br />
<br />
解題步驟 :<br />
<br />
宣告整數陣列 f ,大小39格,存放費式數列。<br />
<br />
宣告整數 n , 存放測資個數;整數 m ,存放測試資料;整數 index ,設定陣列起始位置。<br />
<br />
由於測試資料 <span style="color: red;">1<= n <= 500</span>,<span style="color: blue;">所以不用考慮0的狀況</span>,直接設定f[0] = 1、f[1] = 1。<br />
<br />
之後建立費式數列。((看註解部分。<br />
<br />
接下來就是演算法的部分。先輸入測資個數存放到n,for迴圈的次數限定為 n。<br />
<br />
輸入測試資料 m ,設定index的位置為陣列最後一格開始。<br />
<br />
while迴圈部分,是要<span style="color: blue;">設定測試資料 m 要從哪一格陣列開始計算</span>。<br />
(EX : 17,陣列起始位置不能大於17,所以從13開始。)<br />
<br />
所以如果 m 大於等於 目前陣列位置的數字,則要繼續往下遞減,一直找到小於m為止。<br />
<br />
找到之後,將那一個陣列位置設為起始位置,存放到 index。 <br />
<br />
之後設定for迴圈,從 index為止,去跑費式數列中的每一格數字。<br />
<br />
如果 m 大於等於 目前陣列位置的數字,則計算 m - f[j],並印出1。<br />
<br />
else,就印出0。<br />
<br />
<span style="color: red;"><b>*</b></span>要注意的是,<span style="color: blue;">for迴圈的中止條件為 <=1 </span>。因為f[0]也是等於1,如果跑到0才停止的話,會多印出一個0。<br />
<br />
<br />
EX :<br />
<br />
1<br />
10<br />
<br />
n =1。進入for迴圈,m = 10;index = 39 -1 = 38。 <br />
<br />
進入while,while(10<=f[38]),成立,index - -。<br />
(中間省略......)<br />
<br />
一直計算到 while(10<=f[5]),不成立,跳出while迴圈,此時 index = 5。<br />
<br />
(<span style="color: blue;">先將 m 和等號印出</span>,後面跑 for迴圈就可以直接印出1或0。)<br />
<br />
進入for迴圈。<br />
<br />
進入判斷式, if(10 >= f[5] )成立,印出1,m = 10 - 8 = 2。<br />
<br />
進入判斷式, if(2 >= f[4] )不成立,印出0。<br />
<br />
進入判斷式, if(2 >= f[3] )不成立,印出0。<br />
<br />
進入判斷式, if(2 >= f[2] )成立,印出1, m = 2 - 2 = 0。<br />
<br />
進入判斷式, if(0 >= f[1] )不成立,印出0。<br />
<br />
最後印出(fib)。<br />
<br />
10 = 10010 (fib)<br />
<br />
<br />
By 小K <br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />KPhttp://www.blogger.com/profile/17803929247953368563noreply@blogger.com0tag:blogger.com,1999:blog-4144959627260631091.post-72225467877457708342014-02-14T02:46:00.001+08:002014-02-14T02:52:24.724+08:00[資安]How is your password strong?<span style="font-size: large;">相信前陣子的報導<span style="color: blue;">-</span><a href="http://itopmarketing.com/index.php/News/show/id/1616/lmid/203"><b><span style="color: blue;">2013最容易破解的密碼</span></b></a>,大家都有看過了。</span><br />
<span style="font-size: large;"><br /></span>
<span style="font-size: large;">大約兩個禮拜前,小K有去參加4天的CEH v8道德駭客技術認證的研習,</span><br />
<span style="font-size: large;"><br /></span>
<span style="font-size: large;">深刻的體認到網路這東西到底有多麼不安全,還有這世界上厲害的駭客多的數不清...</span><br />
<br />
<a name='more'></a><span style="font-size: large;">回家後,我趕緊對電腦的維護做了一些加強,網站也不敢隨被亂看了(笑)</span><br />
<span style="font-size: large;"><br /></span>
<span style="font-size: large;">還有密碼,這是我今天發文的重點!!</span><br />
<span style="font-size: large;"><br /></span>
<span style="font-size: large;">在研習課程上,講師有跟我們講解駭客破解密碼的基本招數和原理,</span><br />
<span style="font-size: large;"><br /></span>
<span style="font-size: large;">密碼的組成,是決定你密碼強度的重要關鍵-->這是廢話嗎?!</span><br />
<span style="font-size: large;"><br /></span>
<span style="font-size: large;">要在講解這些原理會寫很大一篇,而且寫不到今天的重點,所以我就不分享了。</span><br />
<span style="font-size: large;"><br /></span>
<span style="font-size: large;">對於一般使用者,要如何知道自己的密碼強度有多強呢??</span><br />
<span style="font-size: large;"><br /></span>
<span style="font-size: large;">Intel發表了一個網站<a href="https://www-ssl.intel.com/content/www/tw/zh/forms/passwordwin.html"><b><span style="color: blue;">你的密碼強度有多高?</span></b><span style="color: black;"> </span></a>可以讓你做一個簡單的測試。</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguZl6cJPAfNB10EnJKo_vrAewEZkSfMfcN7ox3PZJKL2csaXnoQSTHgoifQPdcP-IV0iomDv5rYpzZFOx437BcI2FHiibeQLS-wQHRjHKKeFelvOE2MrBNNftKCPQPcKgGD8jvQs2SdqUU/s1600/pass.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguZl6cJPAfNB10EnJKo_vrAewEZkSfMfcN7ox3PZJKL2csaXnoQSTHgoifQPdcP-IV0iomDv5rYpzZFOx437BcI2FHiibeQLS-wQHRjHKKeFelvOE2MrBNNftKCPQPcKgGD8jvQs2SdqUU/s1600/pass.png" height="568" width="640" /></a></div>
<br />
<br />
<b><span style="color: red; font-size: large;">*請不要在網頁上輸入真實的密碼。記住我說的,網路很不安全!!</span></b><br />
<span style="font-size: large;"><br /></span>
<span style="font-size: large;">我的第一組測試密碼是全部小寫加一個數字的組合。</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfJiAdZpTEYhYUMEqQgbCLW0SMw9QIARPHuaxUF9QNM0RRwXWZppD7AjbYUN_4w5J-3luzpTB55UKTRojIIqmJVJeQyMKmINmBYR_qnmBeI6iW6dzHxDJu84KB37Dqkqici_QpY8AmlhRU/s1600/pass2.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfJiAdZpTEYhYUMEqQgbCLW0SMw9QIARPHuaxUF9QNM0RRwXWZppD7AjbYUN_4w5J-3luzpTB55UKTRojIIqmJVJeQyMKmINmBYR_qnmBeI6iW6dzHxDJu84KB37Dqkqici_QpY8AmlhRU/s1600/pass2.png" height="580" width="640" /></a></div>
<br />
<span style="font-size: large;">是的,你沒有看錯。只需要<span style="color: red;">0.0007秒</span>。</span><br />
<span style="font-size: large;"><br /></span>
<span style="font-size: large;">如果你測試的密碼和我的第一組一樣悲劇的話,不要傷心,Intel教你如何加強密碼的強度。</span><br />
<span style="font-size: large;"><br /></span>
<span style="font-size: large;">剛剛在上面提到,密碼的組合決定你的密碼強度。</span><br />
<span style="font-size: large;"><br /></span>
<span style="font-size: large;">也就是說,<span style="color: blue;">你的組合越複雜,你的密碼就越安全</span>。</span><br />
<span style="font-size: large;"><br /></span>
<span style="font-size: large;">以下是我第二組密碼的測試結果。</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjA0nLQIDekba8GMq6n9bX7Cyvxlm6s0gWJtjJsBwkhwC-J7ePlB104wh6eLFdZUvcGD0BmcZjuS3SVhtYYFt7Vz1WCeS7SAdWPlg6PXAdRA2sJKD7rxq5zIdlTpaFcI56vD4rNdKyZTi6T/s1600/pass3.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjA0nLQIDekba8GMq6n9bX7Cyvxlm6s0gWJtjJsBwkhwC-J7ePlB104wh6eLFdZUvcGD0BmcZjuS3SVhtYYFt7Vz1WCeS7SAdWPlg6PXAdRA2sJKD7rxq5zIdlTpaFcI56vD4rNdKyZTi6T/s1600/pass3.png" height="574" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;">大小寫混和加一個特殊符號在融合數字,從0.0007秒瞬間增強到一百億年。</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;">當然駭客破解這樣的密碼不需要花那麼久,但從中可以對照出密碼強弱。</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;">你的密碼還是全部小寫嗎?? 該換一換囉!!</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;">By 小K</span></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<br />KPhttp://www.blogger.com/profile/17803929247953368563noreply@blogger.com0tag:blogger.com,1999:blog-4144959627260631091.post-71379591502035470462014-01-18T03:29:00.000+08:002014-01-18T03:33:17.985+08:00[筆記]好用的雲端記事簿-notepad.cc<div>
<span style="font-size: large;">今天要跟大家介紹一款好用的雲端筆記簿。</span></div>
<div>
<a name='more'></a></div>
<span style="font-size: large;">因為自己常常需要臨時紀錄一些東西,在學校上課時也常常會直接在電腦上做筆記。</span><br />
<div>
<span style="font-size: large;"><br /></span></div>
<div>
<span style="font-size: large;">原本是用記事本在記錄,打完儲存後在放到隨身碟帶上帶下,一個不小心如果忘記帶,就要開新檔紀錄胡去後再整理,實在不是很方便。</span></div>
<div>
<span style="font-size: large;"><br /></span></div>
<div>
<span style="font-size: large;">而這個網站正好解決了我的困擾-</span><a href="http://notepad.cc/"><b><span style="color: blue; font-size: large;">notepad.cc</span></b></a></div>
<div>
<br /></div>
<div>
<span style="font-size: large;">點進去這個網站後,他就是一個純白的編輯頁面,你可以直接在上面做紀錄的動作。</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhl__4YJRf6wcZJC1Tz81VEujJxHitqljp355HzR2OztpG-nYOeqdQDznabu4_Xt-KzA_bGrloCi4xBE9A4iXNzP0xqOyYUAa4hHKNPfbZIyfB0lRP_zRsaZlexqkwKgtrBf71niVP6aCl0/s1600/1.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhl__4YJRf6wcZJC1Tz81VEujJxHitqljp355HzR2OztpG-nYOeqdQDznabu4_Xt-KzA_bGrloCi4xBE9A4iXNzP0xqOyYUAa4hHKNPfbZIyfB0lRP_zRsaZlexqkwKgtrBf71niVP6aCl0/s1600/1.png" height="284" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;">他是<span style="color: blue;">即時線上儲存</span>,你打完一句句子按ENTER後,他就會馬上存檔。</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;">存在哪裡?? 存在預設的雲端空間,而且會直接建立一個網址給你。</span></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;">當然你也可以自己設定網址,下面有一個「<span style="color: blue;">change url</span>」,直接輸入你想要改什麼名字就好。</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjC6cwdzxFljAdsUFuYS1Nevp4uy-WTLw8s5gFonSSLmPprYW042LC_Umwvqc2m6a9dn5Ix6zTUc3L1KJI2doJACyKqYIirlZcb4JmmJ0bEFGQ8v880uub1p61SXRGDCc1YuATZ-et5_ALD/s1600/2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjC6cwdzxFljAdsUFuYS1Nevp4uy-WTLw8s5gFonSSLmPprYW042LC_Umwvqc2m6a9dn5Ix6zTUc3L1KJI2doJACyKqYIirlZcb4JmmJ0bEFGQ8v880uub1p61SXRGDCc1YuATZ-et5_ALD/s1600/2.png" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;">按save儲存之後,你的網址就會修改完畢,就會變成是專屬於你的雲端記事簿。</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidmZLnnwrymwtHIMd0jJW_cZEQgCQgthVQsnWjen9USkbgPUHAMqUj7weZUk1EHKHxO632vWNlgI4pkDMsf9hHRZ5mcmjnDRzYbrvDF9WhDJzzAIT7wh6vATdTHOINtvnmN2LyPYEYfsuM/s1600/3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidmZLnnwrymwtHIMd0jJW_cZEQgCQgthVQsnWjen9USkbgPUHAMqUj7weZUk1EHKHxO632vWNlgI4pkDMsf9hHRZ5mcmjnDRzYbrvDF9WhDJzzAIT7wh6vATdTHOINtvnmN2LyPYEYfsuM/s1600/3.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;">由於是存放在雲端,所以只要知道網址,任何人都可以進來觀看你的筆記,因此這個網站也有提供一個保護隱私的功能-<span style="color: blue;">密碼保護</span>。</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIZsPLR9plhOf9HLk0qp8nLUuJliD49IVyfnqs2IQvAkcR2b8b7rCnlDuaR7wPS3DZU0g4F3RFV5c0jmGytLjm58iZruh7ZunQKQWiDJuixiw1d2oRLUGmoIk9QAxa0_AAx1Flw0pSjBHl/s1600/4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIZsPLR9plhOf9HLk0qp8nLUuJliD49IVyfnqs2IQvAkcR2b8b7rCnlDuaR7wPS3DZU0g4F3RFV5c0jmGytLjm58iZruh7ZunQKQWiDJuixiw1d2oRLUGmoIk9QAxa0_AAx1Flw0pSjBHl/s1600/4.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;">輸入密碼之後,按儲存,左邊網址列旁邊會多了一個上鎖的圖案,按下去之後就會鎖起來。</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYrfaCfVKOryf9sZ38qb9hyphenhyphenf-nF1RV-siUn_g4zt7b9Y7P4ms6yS7t2HxZ92xykAEhMbqgYw3nlF-dbPxQusWbi1_Vx7DqYskkygFydpES7bCG6tlDkbSFs0M5mGB3GRoGw3hFqzsmbWnm/s1600/6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYrfaCfVKOryf9sZ38qb9hyphenhyphenf-nF1RV-siUn_g4zt7b9Y7P4ms6yS7t2HxZ92xykAEhMbqgYw3nlF-dbPxQusWbi1_Vx7DqYskkygFydpES7bCG6tlDkbSFs0M5mGB3GRoGw3hFqzsmbWnm/s1600/6.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;">你的筆記本就會受到密碼保護,要進去就必須輸入密碼才能進行編輯囉。</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhb5Ye5sXp3IyGwZEaIaxuxl9Ycp0NhqLybIz-qmkLhNOyz-1367pzUxqGc3LZ_msgXMyFgSjIlIk_XwqI2ViDXblTX_VAwoctSw4SGYS4iRMxt3x842vAUxAqHu367LsCEkimdwsmXlFSX/s1600/5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhb5Ye5sXp3IyGwZEaIaxuxl9Ycp0NhqLybIz-qmkLhNOyz-1367pzUxqGc3LZ_msgXMyFgSjIlIk_XwqI2ViDXblTX_VAwoctSw4SGYS4iRMxt3x842vAUxAqHu367LsCEkimdwsmXlFSX/s1600/5.png" height="360" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;">我覺得這個網站對於常常使用電腦做筆記或報告草稿的使用者非常方便,至少對我的幫助還蠻大的,所以就上來打篇文章分享一下。</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;">唯一的缺點是只能用純文字編輯,沒辦法加圖片,也沒有像Gmail那樣比較進階的編輯器,在表現上可能有些單調古板。</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;">不過可以設密碼,只有知道密碼的人可以編輯和觀看,或許還可以拿來玩<span style="color: blue;">交換日記</span>呢!!(思考)</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;">有寫的也太累了......改成用打的速度快很多可以多寫幾個字這樣~(笑)</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;">By 小 K</span></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
KPhttp://www.blogger.com/profile/17803929247953368563noreply@blogger.com0tag:blogger.com,1999:blog-4144959627260631091.post-61657225455170893282014-01-06T11:55:00.003+08:002014-06-17T15:41:00.981+08:00[UVA]Tell me the frequencies!CPE 10410、UVA 10062 程式解題。<br />
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhryEmTNFXCxq0zUTQqUh3JGc-YwqpgS9feF17RLXmFqn7YAjs98lAWIvU9AOAWtZ1HIGOSRffke9MklPHXF7amNigCIIk6UsB9NTRts96Iqdy_LewWlipb00b0pOtLza92ms3nZgOrBMeZ/s1600/uva10062.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhryEmTNFXCxq0zUTQqUh3JGc-YwqpgS9feF17RLXmFqn7YAjs98lAWIvU9AOAWtZ1HIGOSRffke9MklPHXF7amNigCIIk6UsB9NTRts96Iqdy_LewWlipb00b0pOtLza92ms3nZgOrBMeZ/s1600/uva10062.png" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
解題觀念:</div>
<div>
<br />
<a name='more'></a></div>
<div>
這題要稍微查一下ASCII碼,輸入字串,找出每一個字元的ASCII碼,並統計出現次數。</div>
<div>
<br /></div>
<div>
題目有標明範圍是從<span style="color: blue;">32~128</span>,所以可以很放心地設定陣列大小。</div>
<div>
<br /></div>
<div>
出現次數<span style="color: red;">由小到大</span>印出,如果次數相同則<span style="color: red;">ASCII碼大者</span>先印出。</div>
<div>
<br /></div>
<div>
這題還有一點要注意的就是,<span style="color: red;"><b>每組測試資料間要輸出一行空白列</b></span>。</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
解題步驟:</div>
<div>
<br /></div>
<div>
宣告字串str,讓使用者輸入。</div>
<div>
<br /></div>
<div>
宣告陣列save[],用來當做存放字元的格子,並統計次數。</div>
<div>
<br /></div>
<div>
宣告字元c,抓取字串中的字元。</div>
<div>
<br /></div>
<div>
宣告整數count,統計字元的總個數。</div>
<div>
<br /></div>
<div>
<b><span style="color: blue;">宣告布林變數deal</span></b>,用來判斷是否要印出空白列,初始值設定為false。</div>
<div>
<br /></div>
<div>
剛開始的第一組資料還不用印出空白列,所以deal = false,不印出。</div>
<div>
<br /></div>
<div>
輸入的測試資料<b>有可能包含空白</b>,所以用<span style="color: blue;"><b>naxtLine()</b></span>讀取。</div>
<div>
<br /></div>
<div>
設定for迴圈,抓取字元,並存入陣列格子;由於ASCII碼從32開始,所以將其減掉32,<b>從零開始存入格子</b>。</div>
<div>
<br /></div>
<div>
每讀取一個字元,count就加1。</div>
<div>
<br /></div>
<div>
設定另一個雙層for迴圈,外層迴圈起始值<b>從1開始遞增到count值為止</b>,將ASCII碼出現次數由小到大印出;內層迴圈起始值<b>從96(ASCII碼最大者)開始往下遞減</b>,如果碰到次數相同則將ASCII碼較大者印出。</div>
<div>
<br /></div>
<div>
*印出時<span style="color: red;">記得將字元轉成ASCII碼數字</span><span style="color: blue;"> (s+32)</span>。</div>
<div>
<br /></div>
<div>
之後將該格子<b>初始化</b>,以便下一組資料儲存。</div>
<div>
<br /></div>
<div>
迴圈結束後,將count初始化;並<span style="color: blue;">將deal 設定為 true</span>,如果有下一組資料,則回到上面if判斷式成立,會印出空白列。</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
EX:</div>
<div>
<br /></div>
<div>
AAABBC</div>
<div>
<br /></div>
<div>
進入if判斷式,deal = false,不成立,不印空白列。</div>
<div>
<br /></div>
<div>
str = AAABBC</div>
<div>
<br /></div>
<div>
進入for迴圈,抓取字元 c = A,存入陣列 save[A-32] = save[65-32] = save[33]++;之後count++。</div>
<div>
<br /></div>
<div>
再繼續執行for迴圈,...(以下省略)。</div>
<div>
<br /></div>
<div>
執行完結果,save[33] = 3;save[34] = 2;save[35] = 1;count = 6。</div>
<div>
<br /></div>
<div>
進入雙層for迴圈,外層迴圈起始值從1開始遞增到count值為止,內層迴圈起始值從96開始往下遞減;</div>
<div>
<br /></div>
<div>
僅入if判斷式,...(直接跳到35),s[35] == 1,成立,印出。 之後初始化-->save[35] = 0。 (其他字元以此類推)</div>
<div>
<br /></div>
<div>
結束迴圈後,count = 0;deal = true。(如果有下一組側資,則<span style="color: blue;">if(deal)</span>會成立,印出空白列)</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
By 小K</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
KPhttp://www.blogger.com/profile/17803929247953368563noreply@blogger.com0tag:blogger.com,1999:blog-4144959627260631091.post-10418676021310500112014-01-03T14:02:00.000+08:002014-06-17T15:41:13.621+08:00[UVA]Vito's familyCPE 10406、UVA 10041。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUxG6yH_EF2RhuCzSZlqhX4IQ-G-I11beWl8AJcjAkCQCXtLFsoKcdriLjR7EwEfXArfMduOIMEqHrrDAx9K8xcgYhyphenhyphenky8_RbBp7KnfhLkSbTpxCIkFLLcHX_ber2oBFlLvJBsQ2VM1ysn/s1600/uva10041.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUxG6yH_EF2RhuCzSZlqhX4IQ-G-I11beWl8AJcjAkCQCXtLFsoKcdriLjR7EwEfXArfMduOIMEqHrrDAx9K8xcgYhyphenhyphenky8_RbBp7KnfhLkSbTpxCIkFLLcHX_ber2oBFlLvJBsQ2VM1ysn/s1600/uva10041.png" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
解題觀念:<br />
<br />
<a name='more'></a><br />
背景故事就跳過了。<br />
<br />
這題主要就是說,Vito要搬新家,然後他要找一棟和她所有親戚<span style="color: red;">距離總和最短</span>的房子。<br />
<br />
就等於是要找這些房子的"<span style="color: blue;">中點</span>"在哪裡,叫他搬到那裏就對了~<br />
<br />
( 注意:<b>有些親戚的門牌會一樣</b>,且兩者間的距離為<b>絕對值</b>。 )<br />
<br />
<br />
<br />
<br />
解題步驟:<br />
<br />
宣告整數n,為測資個數。親戚數量<span style="color: red;">不會大於500</span>,如果>500則break。<br />
<br />
宣告整數d,為親戚房子數量,<span style="color: red;">不會大於3000</span>,如果>3000則break。<br />
<br />
宣告整數m,存放中點位置;宣告整數sum,存放距離總和。 <br />
<br />
宣告陣列a[],其長度為親戚房子數量, 每個格子存放房子門牌號碼。<br />
<br />
輸入完後,做<span style="color: blue;">排序</span>( <span style="color: blue;"><b>Array.sort()</b></span> ),將號碼<b>從小排到大</b>,之後<span style="color: blue;">找出中點</span>。<br />
<br />
進入for迴圈,將所有門牌號碼和中點相減,<span style="color: blue;">算出距離絕對值</span>,<br />
<br />
再將距離相加後<span style="color: blue;">存放到sum</span>,之後印出,結束後將sum初始化。<br />
<br />
<br />
EX:<br />
<br />
1<br />
2 2 4<br />
<br />
( 一組側資,兩個門牌號碼(兩棟房子)。 )<br />
<br />
a = new int[2];a的陣列長度為2。<br />
<br />
a[0] = 2;a[1] = 4。排序後==>[ 2 , 4 ]。<br />
<br />
m = a[2/2] = a[1] = 4。<br />
<br />
sum + = | a[0] - 4| = 2;sum = 2。<br />
<br />
sum+ = |a[1] - 4| = 0;sum = 2+0 = 2。<br />
<br />
印出 2 。<br />
<br />
<br />
By 小K KPhttp://www.blogger.com/profile/17803929247953368563noreply@blogger.com0tag:blogger.com,1999:blog-4144959627260631091.post-26778192805007141462014-01-03T11:17:00.000+08:002014-06-17T15:41:27.650+08:00[UVA]What's Cryptanalysis?CPE10402、UVA10008 程式解題。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8Ba57d7j37FcEpDsP0ZGPAmQXTTWWMx4ou6HBR8_zzgcuR9ecjO5nN2iUhug6nuC2hcSs7gCsCgMrHyRD2PhgdBDjYtenqdiSPcohA1yCP_Wjil93E9mgb46mqYAVb6OrLxrEN79UBEm2/s1600/uva10008.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8Ba57d7j37FcEpDsP0ZGPAmQXTTWWMx4ou6HBR8_zzgcuR9ecjO5nN2iUhug6nuC2hcSs7gCsCgMrHyRD2PhgdBDjYtenqdiSPcohA1yCP_Wjil93E9mgb46mqYAVb6OrLxrEN79UBEm2/s1600/uva10008.png" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
解題觀念:<br />
<br />
<br />
<a name='more'></a>這題要輸入句子後,<span style="color: blue;">統計各個字母的出現次數</span>,且<span style="color: blue;"><b>不分大小寫</b></span>。<br />
<br />
所以要處理字母大小寫,看是要全部轉成小寫還是全部轉成大寫。<br />
<br />
依照<b>出現次數由大到小印出</b>,如果<b>次數相同,則先印出排序較前的字母</b>。次數為0不印出。 <br />
<br />
一個句子裡面可能會有空白列,所以<b>要讀取( <span style="color: blue;">.nextLine()</span> )並處理空白</b>。<br />
<br />
(此版本為第一次寫出的程式版本,未整理可能有些許瑕疵。)<br />
<br />
<br />
<br />
<br />
解題步驟:<br />
<br />
宣告整數a,讓使用者設定要輸入幾句句子;整數<span style="color: blue;">MAX</span>,<span style="color: blue;">統計總共有幾個字母</span>。<br />
<br />
宣告字串s,存放句子;宣告字元c,等等抓取字元後存放用。<br />
<br />
宣告<span style="color: blue;">陣列count,存放各個字母並統計次數</span>。<br />
<br />
整數a,輸入要有幾個句子。同時為for迴圈次數設定。<br />
<br />
字串s,輸入句子,<b>將所有空白處理掉</b>(<span style="color: blue;"><b> .replaceAll() </b></span>),再將<b>全部轉為大寫</b>(<span style="color: blue;"><b> .toUpperCase() </b></span>)。<br />
<br />
進入for迴圈,讀取字元後設定給c。<br />
<br />
進入if判斷字元c是否為A~Z字母,如果是則<span style="color: blue;"><span style="background-color: white;">存放到相對應的陣列格子</span></span><span style="background-color: blue;"></span>,<span style="color: blue;">並統計次數</span>。<br />
( if c=A,count[A-'A'] = count[65-65] = count[0] ,其他字母以此類推。)<br />
<br />
MAX要統計所有字母的個數,所以每當讀取到一個字母就要+1。<br />
<br />
處理完所有句子後,進入下一個雙層for迴圈,執行印出動作。<br />
<br />
從MAX開始往下遞減,判斷陣列的格子從A開始到Z,是否有對應到相同次數。<br />
<br />
因為是<b>從最大次數向下遞減</b>,所以會依照出現次數由大到小印出;<br />
<br />
陣列格子也<b>從A開始判斷</b>,所以能夠依照排順序依序印出。<br />
<br />
<span style="color: red;">( * 要記得將 j 強轉成字元,不然直接輸出會是數字。)</span><br />
<br />
<br />
EX:<br />
<br />
1<br />
To be or not to be.<br />
<br />
將所有空白去除==>Tobeornottobe.<br />
<br />
轉成大寫==>TOBEORNOTTOBE.<br />
<br />
進入for迴圈,讀取字元,c = T。 進入if判斷式,T>=A && T<=Z,成立。<br />
<br />
存入陣列,coumt[T-'A'] = count[84-65] = count[19] ++。MAX ++。<br />
( 其他字母以此類推,我就跳過囉! )<br />
<br />
進入下面雙層for迴圈,此時MAX = 13。<br />
<br />
從13開始往下遞減,進入內層for迴圈,從A格子開始對應次數。 <br />
<br />
如果符合判斷式則印出,不符合則continue。<br />
<br />
<br />
By 小K<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />KPhttp://www.blogger.com/profile/17803929247953368563noreply@blogger.com0tag:blogger.com,1999:blog-4144959627260631091.post-61815854731233982632013-12-20T10:47:00.000+08:002014-06-17T15:41:42.456+08:00[UVA]ProductUVA10106、CPE10526 程式解題。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLG8_UrtTobmNmNCAD16GTt9ERhBICfEPmquGR8zAXTm74Z9M011XGIUuCPrtprtgmJFTcesalWDABgdo-D56zTCBy7FC9zA5PngvQ2XkeM-K1gPHx5Plo7GjxBltbpzZU_-zxM3ZROCKr/s1600/uva10106.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLG8_UrtTobmNmNCAD16GTt9ERhBICfEPmquGR8zAXTm74Z9M011XGIUuCPrtprtgmJFTcesalWDABgdo-D56zTCBy7FC9zA5PngvQ2XkeM-K1gPHx5Plo7GjxBltbpzZU_-zxM3ZROCKr/s1600/uva10106.png" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
解題觀念:<br />
<br />
<a name='more'></a><br />
這題是很簡單的大數數學運算,把兩個<b>大數相乘</b>的結果印出就解決了。<br />
<br />
這題如果用C寫,就是名副其實的二星題,但如果是用JAVA就變成小兒科。<br />
<br />
只要你會用<b>BigInteger</b>,而觀念剛剛在第一行已經講完了(笑)<br />
<br />
<br />
<br />
解題步驟:<br />
<br />
這題用BigInteger可以有兩種解法。<br />
<br />
解法一 :<br />
<br />
就是上面的那組程式。 <br />
<br />
宣告兩個<span style="color: red;">BigInteger物件變數</span>a,b,直接輸入。<br />
<br />
之後將兩者相乘(<b><span style="color: blue;">a.mutiply(b)</span></b>),將結果印出。<br />
<br />
解法二:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYWB73XJOkHGtklklOqdti2qir-eePbhUI2yMTbmn51pjLqX9mDWX3Yc0if513453MmNzGJ4gIULFWGkxVm6iGQMNaq7wfIp5BQBm8Yz9QZ9YKfdq5LiP9mJXqBKBCy5V2gSCjIhfsqexO/s1600/2.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYWB73XJOkHGtklklOqdti2qir-eePbhUI2yMTbmn51pjLqX9mDWX3Yc0if513453MmNzGJ4gIULFWGkxVm6iGQMNaq7wfIp5BQBm8Yz9QZ9YKfdq5LiP9mJXqBKBCy5V2gSCjIhfsqexO/s400/2.png" height="228" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
先用字串輸入,再<span style="color: red;">將兩組字串轉成BigInteger物件做運算</span>。<br />
<br />
當然用第一種解法比較簡單,程式碼比較少,記憶體用量也比較小。<br />
<br />
之後,印出。<br />
<br />
<br />
<br />
EX:<br />
<br />
12 12<br />
<br />
a = 12,b = 12;相乘 = 144。<br />
<br />
第二種解法:<br />
<br />
sa = 12,sb = 12;<br />
<br />
a = new BigInteger(12) = 12,b = new BigInteger(12) = 12;<br />
<br />
相乘 = 144。<br />
<br />
By 小K<br />
<br />KPhttp://www.blogger.com/profile/17803929247953368563noreply@blogger.com0tag:blogger.com,1999:blog-4144959627260631091.post-82621570153773773842013-11-25T14:03:00.005+08:002013-11-25T14:06:57.087+08:00[筆記]程式要怎麼寫?<span style="font-size: large;">在學校當TA時,常常會被問到一個問題。</span><br />
<span style="font-size: large;"><br /></span>
<span style="font-size: large;">相信有在解CPE、UVA或高中生程式問題的朋友,身邊應該都會有這樣的初學者會問這樣的問題-<b>「程式要怎麼寫?」</b></span><br />
<span style="font-size: large;"><br /></span>
<br />
<a name='more'></a>
<span style="font-size: large;">是自學程式語言的人不談,大部分的人在學校學了很多基礎的知識和語法,課本的範例照著打都會,稍微修改也還OK,但是真正看到<b>"只有"</b>程式題目時,腦筋卻一片空白不知道要如何下手。</span><br />
<span style="font-size: large;"><br /></span>
<span style="font-size: large;">所以小K就想說來整理一下自己寫程式的心得和概念。</span><br />
<span style="font-size: large;"><br /></span>
<span style="font-size: large;">解一題程式最重要的3個步驟:</span><br />
<span style="font-size: large;"><br /></span>
<span style="color: blue; font-size: large;">1、解讀題目</span><br />
<span style="font-size: large;"><br /></span>
<span style="color: blue; font-size: large;">2、想出解法</span><br />
<span style="font-size: large;"><br /></span>
<span style="color: blue; font-size: large;">3、解題 </span><br />
<span style="font-size: large;"><br /></span>
<br />
<h4>
<span style="color: blue; font-size: large;">(一) 解讀題目</span></h4>
<span style="font-size: large;">我想大部分的人在第一關就會先被打槍(笑)~因為UVA題目都是英文敘述,光是那串英文看到就頭痛更不要說去了解了。</span><br />
<span style="font-size: large;"><br /></span>
<span style="font-size: large;">但是殘念......這是一定要克服的喔!如果真的看不懂可以先去高中生程式那邊看看,都有中文敘述,或是網路也有些專門將題目翻成中文的網站可以參考。</span><br />
<span style="font-size: large;">(題目翻譯查詢:<a href="http://luckycat.kshs.kh.edu.tw/" target="_blank"><span style="color: blue;">Lucky貓園地</span></a>)</span><br />
<span style="font-size: large;"><br /></span>
<span style="font-size: large;">不過小K在這邊還是建議大家要試著去練習看英文題目,而UVA的英文敘述有一半其實都是<strike>廢話居多</strike>,我分享一下我是如何解讀題目。</span><br />
<span style="font-size: large;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-size: large;"><img border="0" height="402" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhH2CvfRvE3lwikJlpoQI06xsJfMCn8CxdLIP2H5uV5qhquAUDAbJvyzhLNpj5U4Hp1YV80sw0qGzGmUDLvC28xBixj1j2EeLjTvs3IRo8kFzP_EBCyrEJL1rDw-07u-q8XsiNJiFzOBd69/s640/1.png" width="640" /> </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;">紅色框框是我會先去看的部分,先看<span style="color: red;">輸入的測資是甚麼樣子</span>的~再看<span style="color: red;">要我們輸出(計算)甚麼</span>;</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;">之後再去看藍色框框Description的部分,看這題題目<span style="color: blue;">有哪些需要特別注意的限制條件</span>。</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;">(通常<span style="color: blue;">有數字</span>的那行英文就是重點,看那幾行就對了,例如:<b>up to 1000 digits</b>) </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;">有些題目還會有所謂的"故事背景",我選的這題剛好沒有,通常故事背景直接跳過沒有關係。</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;"><br /></span></div>
<h4 class="separator" style="clear: both; text-align: left;">
<span style="color: blue; font-size: large;">(二) 想出辦法</span></h4>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;">接下來是整個過程中最重要的~</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;">解讀完題目後,先不要急著寫程式,<span style="color: blue;">請先思考這題題目要「怎麼解?」</span></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;">寫程式最重要的就是邏輯思考,而且要<span style="color: red;"><b>Step by Step</b></span>。</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;">回想一下,以前在解數學題目時,我們是怎麼寫答案的??是不是先思考要用甚麼算式,之後在將計算過程一步一步寫下來?</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;">所以寫程式也是如此。</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;">先想出解這個題目的辦法後,再<span style="color: blue;">將這些想法轉換成程式碼</span>一步一步清楚的打出來。</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;">而要把想法轉換成Code也是要具備一些基礎能力,關於這個部份我再另外寫篇文章,今天最主要是分享解題的過程而已~(笑) </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;"><br /></span></div>
<h4 class="separator" style="clear: both; text-align: left;">
<span style="color: blue; font-size: large;">(三)解題 </span></h4>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;">最後就是開始解題拉~</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;">上一個步驟是先思考解決辦法,但是<b>辦法行不行得通還是要實際去做才會知道。</b></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;">如果跟答案相差不多,那基本上就是某些地方做個微調就好了;但如果出來的解果跟題目要求的差了十萬八千里,那就要再重新思考那個地方出錯。</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;">所以我所寫的解題紀錄都會分成三部分:</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: blue; font-size: large;">解題觀念:</span><span style="font-size: large;">就是上面的第二個步驟-想出辦法。</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: blue; font-size: large;">解題步驟:</span><span style="font-size: large;">就是解題,用了甚麼工具或語法解題。(這部分我會再另外整理)</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="color: blue; font-size: large;">舉例(EX):</span><span style="font-size: large;">清楚的解釋我的程式是怎麼執行的。而要整理出這個部分,就要有清楚的step by step思考邏輯,因為畢竟是要一步一步的解說過程阿~ </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;">大概就是這樣,這是我在解題時的過程,希望有幫到大家囉!</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;">By 小K</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
KPhttp://www.blogger.com/profile/17803929247953368563noreply@blogger.com0tag:blogger.com,1999:blog-4144959627260631091.post-85061370754238014272013-11-11T13:52:00.002+08:002014-06-17T15:41:54.019+08:00[UVA]Simply EmirpCPE 10428、UVA 10235程式解題。<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPPziXSmhu_naERQCXQcXK8X5_CBFmFcI1iHTCvCdaN6W9lLWxUD_9RDwHPp1AsHf4SnARh6vcQd29UInqUM7-LH4Jm0lNcW-4sqPyEBJBE5qjjCgCgByYHGNm7cHR11yoFD9pSXot2-CW/s1600/uva10235.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPPziXSmhu_naERQCXQcXK8X5_CBFmFcI1iHTCvCdaN6W9lLWxUD_9RDwHPp1AsHf4SnARh6vcQd29UInqUM7-LH4Jm0lNcW-4sqPyEBJBE5qjjCgCgByYHGNm7cHR11yoFD9pSXot2-CW/s1600/uva10235.png" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
解題觀念:<br />
<br />
<a name='more'></a><br />
<br />
此題最主要就是判斷是否為質數。<br />
<br />
若某數為質數且<span style="color: blue;">將數字反轉後也是質數</span>,且<span style="color: blue;">和原數不同</span>,則稱該數為<span style="color: blue;">emirp</span>。<br />
<br />
(EX : 17為質數,反轉後71也是質數,且17不等於71,則17為emirp。)<br />
<br />
但如果原數為質數,但<span style="color: blue;">反轉後和原數相同</span>,則該數為<span style="color: blue;">prime</span>。<br />
<br />
(EX : 131為質數,反轉後依然為131,不是emirp。為prime。)<br />
<br />
不是質數就直接輸出 is not prime。<br />
<br />
所以這題需要做<span style="color: red;">資料反轉</span>的處理。<br />
<br />
還有很重要的一點,<b><span style="color: red;">一定要先做好質數表</span></b>,才能<span style="color: red;">避免逾時</span>。<br />
<br />
<br />
解題步驟:<br />
<br />
先用StringBuffer類別宣告一個ans物件,等等要用來反轉字串。<br />
<br />
宣告兩個整數a1,a2;在宣告兩個字串s1,s2。等一下用來存放資料。<br />
<br />
再來就是建構質數表。<br />
<b>(*這題如果沒有事先建構質數表的話,不管你怎麼寫都一定會逾時。)</b><br />
<br />
至於質數表的建構方式在這邊不多說,可以到此網站去參考=><span style="color: blue;"><a href="http://www.csie.ntnu.edu.tw/~u91029/Prime.html">演算法筆記-質數表建立</a></span><br />
<br />
之後的就是做資料處理。<br />
<br />
輸入整數後先轉字串(Integer.toString()),再<span style="color: red;">轉為StringBuffer的物件</span>(<span style="color: blue;"><b>ans.newStringBuffer(a1)</b></span>),<br />
<br />
將它<span style="color: red;">反轉</span>(<b><span style="color: blue;">ans.reverse()</span></b>),反轉後的資料再轉回字串(ans.toString())存在s2,<br />
<br />
最後轉回整數(Integer.toString())存到a2。<br />
(我在程式碼上面有做註解,如果純文字看不懂可以直接看程式碼。)<br />
<br />
之後做if判斷,<span style="color: blue;">檢查此數字是否有在質數表內(prime[a1]是否等於true)</span>,如果不是就直接輸出not prime。<br />
<br />
如果符合再<span style="color: blue;">判斷數字反轉後是否為質數(prime[a1]是否等於prime[a2])</span>,且<span style="color: blue;">結果是否不同(a1是否不等於a2)</span>。如果符合則印出emirp,不符合則印出prime。<br />
<br />
<br />
EX:<br />
<br />
179<br />
<br />
179先轉字串存到s1,再轉為StringBuffer物件=>ans,之後反轉=>ans=971,<br />
<br />
再轉回字串 s2=971,最後轉回整數 a2=971。<br />
<br />
判斷a1=179是否為質數,符合。<br />
<br />
在判斷971是否和179一樣為質數,且179是否不等於971,符合。<br />
<br />
印出179 is prime. <br />
<br />
<br />
By 小K<br />
<br />KPhttp://www.blogger.com/profile/17803929247953368563noreply@blogger.com0tag:blogger.com,1999:blog-4144959627260631091.post-41093974422550604202013-10-23T11:46:00.003+08:002014-06-17T15:42:11.625+08:00[UVA]Jolly JumpersUVA 10038、CPE 10405程式解題。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0G2P8nIfJuWGNxE3zqZwezAgWefSZoO427RPSA6j1QfWSkl5LAbfxh42hxyv8gXCUkJyMydoQzYeeUNNiStMdnPK8ri0ko-h02DtnpYTP5NPjPckFYPmt_M1F1BCOrq1_Hdu01tAkEfQf/s1600/10408_10056.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0G2P8nIfJuWGNxE3zqZwezAgWefSZoO427RPSA6j1QfWSkl5LAbfxh42hxyv8gXCUkJyMydoQzYeeUNNiStMdnPK8ri0ko-h02DtnpYTP5NPjPckFYPmt_M1F1BCOrq1_Hdu01tAkEfQf/s1600/10408_10056.png" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
解題觀念:<br />
<br />
<a name='more'></a><br />
給你一個數列,算出兩個數字間的差值,是否為1~"數字總個數"的範圍裏面。<br />
<br />
好,純文字敘述看不懂我知道,看下面舉例吧。<br />
<br />
假如:<br />
3,2,5,3,其數字絕對值得差值為1,3,2,,這個數列總共有4個數字,<br />
<br />
{1,3,2}集合有在1~4範圍裡,且<span style="color: red;">沒有重複</span>,所以為Jolly Jumpers。<br />
<br />
反之,則不是。<br />
<br />
所以這題會用到<span style="color: red;">集合</span>喔~<br />
<br />
另外題目還有測資範圍要求,<b>數字長度不超過3000</b>,所以要記得加判斷式。<br />
<br />
<br />
<br />
<br />
解題步驟:<br />
<br />
<span style="color: blue;">用Collection創建新的HasfSet物件 </span>=> ans。(*) <span style="color: blue;">set</span>可以<span style="color: red;">將資料存放進集合</span>,且<span style="color: red;"><b>不重複</b></span>。 <br />
(如果不太懂的話,詳細資料就要請大家去查一下函式庫囉!)<br />
<br />
宣告整數變數n為設定數列長度(個數)。<br />
<br />
在宣告變數a,b,輸入數列的數字。<br />
<br />
先輸入開頭數字=>a,設定for迴圈範圍為數字長度n,<br />
<br />
輸入下一個數字=>b,計算a,b兩者之間絕對值的差值。<br />
<br />
進入判斷式 ,如果差值為1~n-1範圍之間,則<span style="color: blue;">存入集合</span>裡面。語法:(<b><span style="color: blue;">ans.add()</span></b>) 。<br />
<br />
<span style="color: red;"><b>重設a的值等於b<span style="color: black;">。</span></b></span> <br />
<br />
結束for迴圈,如果集合裡面的資料個數為n-1個,則為Jolly Jumpers。<br />
<br />
最後要記得<span style="color: red;">將集合清空</span>(<span style="color: blue;"><span style="background-color: white;">ans.clear()</span></span><span style="background-color: white;"></span>),讓下組資料存進去。 <br />
<br />
<br />
<br />
EX:<br />
<br />
4 3 2 5 3<br />
<br />
陣列長度為4 => n。<br />
<br />
a = 3,進入for迴圈,b = 2,進入絕對值計算,d = 1,進入if判斷式,符合,存入集合。<br />
<br />
ans = [1],重設a的值=>a=b=2。<br />
<br />
再跑一次for迴圈,輸入5 = b,進入絕對值計算,d = 3,進入if判斷式,符合,存入集合。<br />
<br />
ans = [1,3],重設a的值=>a=b=5。<br />
<br />
再跑一次for迴圈,輸入3 = b,進入絕對值計算,d = 2,進入if判斷式,符合,存入集合。<br />
<br />
ans = [1,3,2],重設a的值=>a=b=3。<br />
<br />
跳出for迴圈,進入判斷式,3 = 3符合,印出Jolly Jumpers。<br />
<br />
清空集合。 <br />
<br />
<br />
By 小K <br />
<br />
<br />
<br />
<br />
<br />
<br />KPhttp://www.blogger.com/profile/17803929247953368563noreply@blogger.com0tag:blogger.com,1999:blog-4144959627260631091.post-41262354974357380962013-10-15T13:41:00.001+08:002014-06-17T15:42:29.969+08:00[UVA]Let Me Count The Ways UVA357程式解題。<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCg7sg2Xi0OILVHOe3L3QkfLBzlPxeBs5MYvVB_ZT0YJFpfhKwUPQQUyjWCsOt05KgfYUh5RB18x11_atFnzS84vnJzqYcbYJmzmI1ciblCN3oHtrktUAJYF3vmnhiL2A25j9uXbtIgA40/s1600/ACM357.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCg7sg2Xi0OILVHOe3L3QkfLBzlPxeBs5MYvVB_ZT0YJFpfhKwUPQQUyjWCsOt05KgfYUh5RB18x11_atFnzS84vnJzqYcbYJmzmI1ciblCN3oHtrktUAJYF3vmnhiL2A25j9uXbtIgA40/s1600/ACM357.png" /></a> </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
解題觀念:</div>
<a name='more'></a>《這題的觀念好難打阿....不知道該怎麼打才能讓讀者看得懂!<br />
<br />
所以我盡力解釋!如果還有不懂在留言問我^^。》<br />
<br />
<br />
這題的題意就是要算出<b>一個數字用1、5、10、25、50去組合的話,總共有幾種組合方式。</b><br />
<br />
比如6,它可以用6個1,也可以用一個5加一個1,總共有2種組成方式。 <br />
<br />
數字範圍則是<b>0~3000</b>,所以陣列大小可以很明確去定義。<br />
<br />
那這題我的解法是,<span style="color: red;">個別拆開計算</span>。什麼意思呢?<br />
<br />
舉例來說...... <br />
<br />
6,能用六個1組成,也能用一個5加一個1,但是不夠用25和50去搭配,所以共有2種方式。<br />
<br />
這樣懂我意思嗎?? 就是<span style="color: red;">個別去計算它能用幾次1,幾次5,幾次25和幾次50</span>。<br />
<br />
沒關係,不懂的話等等看下面的EX。<br />
<br />
所以<b>這題不是輸入後去算答案,而是要使用者<span style="color: blue;">輸入數字後去找答案</span>。</b> <br />
<br />
<br />
<br />
解題步驟:<br />
<br />
這題用陣列解是最簡單的方法。<br />
<br />
先宣告一個coin陣列和一個大小30001的money陣列。<br />
<br />
並<span style="color: red;">將 money[0]的初始值設為1</span>。(<b>因為數字1只有一種組合方式</b>)<br />
<br />
設一個for迴圈去跑coin陣列,在設一個內for迴圈去跑money陣列,要<span style="color: red;">計算每個數字的組合方法有幾種。</span><br />
<br />
內迴圈會從0~3000跑完後,外迴圈才會在進入下一個迴圈(coin[1])喔!!<br />
<br />
也就是將所有數字1的組合、5的組合、10的組合、25的組合、50的組合都算過一遍 。<br />
<br />
每個數字的組合方式都算好存在個別陣列中,使用者輸入數字後再去從陣列中尋找答案。<br />
<br />
後面要<b>設個判斷式,判斷輸入的數字是否為1</b>,如果是的話直接印出只有一種方式。<br />
<br />
不是的話,再去陣列找答案。<br />
<br />
<br />
EX:<br />
<br />
1<br />
<br />
進入外層迴圈,coin陣列[0]=1,進入內層迴圈money陣列[1],<br />
<br />
進入判斷式 1>= 1,符合 =>money[1]+=money[1-coin[0]]<br />
<br />
money[1]+=money[0]=1 (<b>剛剛在前面已經把money[0]初始值設為1</b>。)<br />
<br />
所以當使用者輸入1時,進入判斷式money[1]==1,符合,印出....。<br />
<br />
<br />
6<br />
<br />
進入外層迴圈,coin陣列[0]=1,進入內層迴圈money陣列[1],<br />
<br />
進入判斷式 6>= 1,符合 =>money[6]+=money[6-coin[0]]=1<br />
(內層迴圈已經從1跑到5,所以<span style="color: blue;">money[5]=1</span>)<br />
<br />
=====當內層迴圈跑完3000了=====<br />
<br />
再進入外層迴圈,coin陣列[1]=5,進入內層迴圈money陣列[6],<br />
(前面1~5就略過直接進入6吧)<br />
<br />
進入判斷式6>=5,符合 =>money[6]+=money[6-coin[1]]=1+1=2<br />
(<span style="color: blue;">剛剛跑第一次迴圈的時候,money[6]的值已經有加1所以在加1為2。</span>) <br />
<br />
下次有在進入迴圈,coin[2]=25時,判斷式6>=25已經不符合所以不會再做計算,<br />
(<b>※前面1~4也是如此</b>)<br />
<br />
因此money[6]的值就是2,之後印出。<br />
<br />
<br />
By 小K <br />
<br />KPhttp://www.blogger.com/profile/17803929247953368563noreply@blogger.com0tag:blogger.com,1999:blog-4144959627260631091.post-83102117691889821692013-10-09T16:21:00.000+08:002014-06-17T15:42:50.075+08:00[UVA]ParityUVA 10931、CPE 10461程式解題。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOBUyuvYPQ3MgPtwb267HRXsl6-07Iv0yR8ihxzQcJ3YSyVNS1C5hRh10Cpql7r1VifevRGZosjNBvuc2GQ91Ptwa54TCCDKSpNeb209cX2-6WY46ivmnTkqJEagLq6e1Cb-4RSUjTDZhk/s1600/10461.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOBUyuvYPQ3MgPtwb267HRXsl6-07Iv0yR8ihxzQcJ3YSyVNS1C5hRh10Cpql7r1VifevRGZosjNBvuc2GQ91Ptwa54TCCDKSpNeb209cX2-6WY46ivmnTkqJEagLq6e1Cb-4RSUjTDZhk/s1600/10461.png" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
解題觀念:<br />
<br />
<a name='more'></a><br />
<br />
這題要將數字轉為二進位後,去算總共出現了幾個1。<br />
<br />
如果用C寫的話比較麻煩,感謝JAVA吧~因為函式庫實在太方便了!<br />
<br />
將整數轉為二進位的函式:<span style="color: red;">Integer.toBinaryString(); </span><br />
<br />
只要轉為二進位後,在去抓1出現幾次。<br />
<br />
比較要注意的一點是,轉二進位資料型態會變成<span style="color: red;">字串型態</span>。 <br />
<br />
<b>※輸出格式要注意唷!建議直接複製格式!</b><br />
<br />
<br />
<br />
解題步驟:<br />
<br />
題目說輸入為0時,則測資結束。所以要加個判斷式去判斷。<br />
<br />
宣告一整數變數,在宣告一字串變數去存取轉為二進位後的字串。<br />
<br />
宣告字元變數b去抓「1」;宣告整數變數c去累加「1」出現的次數。 <br />
<br />
設定判斷式判斷測資是否結束。<br />
<br />
在用for迴圈去跑,去抓整個字串「1」出現幾次。<br />
<br />
抓字元用:charAt() 就不多說囉!<br />
<br />
<b>※最後一步很重要!!<span style="color: red;">一定要將c歸零!!</span> 不然輸入下筆測資時c沒歸零就會繼續累加。</b><br />
<br />
<br />
<br />
EX:<br />
<br />
10<br />
<br />
10轉為二進位 => 1010<br />
<br />
進入for迴圈,字串第0個字元為1存入b,b=='1'符合,c=0+1=1。<br />
<br />
字串第1的字元為0存入b,b=='1'不符合,c不做計算。c=1。<br />
<br />
字串第2個字元為1存入b,b=='1'符合,c=1+1=2。<br />
<br />
字串第3的字元為0存入b,b=='1'不符合,c不做計算。 c=2。<br />
<br />
印出2。<br />
<br />
其他測資以此類推。<br />
<br />
<br />
By 小K<br />
<br />
<br />
<br />
<br />KPhttp://www.blogger.com/profile/17803929247953368563noreply@blogger.com0tag:blogger.com,1999:blog-4144959627260631091.post-41846428724513482192013-10-09T11:21:00.002+08:002014-06-17T15:43:10.672+08:00[UVA]Hashmat the Brave WarriorUVA10055、CPE10407程式解題。<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1mGX3zNCzKxxo7LobdBiP7kGKkQv16aVes5GtWoyun55_QXrxSyUOtZKf75V2eDyfS_DeXpBugkzYmIUDqYMrYUsnczkmsvE5FeffRhWtzSnYPjgsNHzV0lnbdch0CrHOyH-99ms6W4aa/s1600/uva10055.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1mGX3zNCzKxxo7LobdBiP7kGKkQv16aVes5GtWoyun55_QXrxSyUOtZKf75V2eDyfS_DeXpBugkzYmIUDqYMrYUsnczkmsvE5FeffRhWtzSnYPjgsNHzV0lnbdch0CrHOyH-99ms6W4aa/s1600/uva10055.png" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
解題觀念:<br />
<br />
<a name='more'></a><br />
這題只是很簡單的加減運算。<br />
<br />
我想大家普遍會遇到的問題大概只有兩種:<br />
<br />
1.絕對值運算<br />
<span style="color: red;"><b>2.為什麼我答案都對,但是UVA Online Judge不給過?!!</b></span><br />
<br />
絕對值運算在JAVA有一個非常方便的數學函式可以用:<span style="color: red;">Math.abs()</span>;這邊就不多談了。<br />
<br />
比較有意思的是第二個問題,上傳結果<span style="color: blue;"><b>Runtime error</b></span>......搞什麼?!網站出包?!<br />
<br />
如果真的是這樣也輪不到你去發現這個BUG(笑) <br />
<br />
題目有一行是這樣描述的:<br />
<br />
<div style="text-align: center;">
<span style="font-size: medium;"><span style="font-size: medium;">The input numbers are not
<span style="color: red;">greater than 2^32</span>. </span></span></div>
<br />
你也知道UVA有些測資都很變態......<br />
<br />
好的,這樣大概知道問題在哪吧?請修正你的資料型態囉~<br />
<br />
<br />
<br />
<br />
解題步驟:<br />
<br />
用int宣告可能會爆表,那就改用<span style="color: red;">long</span>吧~<br />
<br />
所以宣告兩個長整數,做絕對值減法運算,印出。<br />
<br />
<br />
EX:<br />
<br />
10 12<br />
<br />
|10-12|=2。<br />
<br />
<br />
(因為小K等等中午有課所以故意挑一題比較簡單的更新.....下午有時間在更新一題。)<br />
<br />
By 小K<br />
<br />KPhttp://www.blogger.com/profile/17803929247953368563noreply@blogger.com0tag:blogger.com,1999:blog-4144959627260631091.post-4600135114693864342013-09-10T13:39:00.001+08:002014-06-17T15:43:34.060+08:00[UVA]TeX QuotsCPE 22131、UVA 272程式解題。<br />
<div>
<br /></div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHu8nF_TS5W_ZkX_aqd2cu376SuaI2cHpC5p2Gi-DEPwFdAd9KYMO2IFRsngw1BIFstNh-l6wcieQyPcQtonGDEndYSYBNa3iBiKlyjd1cGQqeFCt4Z1w0ifyPreyr25eu5zgqabp93v1M/s1600/22131.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHu8nF_TS5W_ZkX_aqd2cu376SuaI2cHpC5p2Gi-DEPwFdAd9KYMO2IFRsngw1BIFstNh-l6wcieQyPcQtonGDEndYSYBNa3iBiKlyjd1cGQqeFCt4Z1w0ifyPreyr25eu5zgqabp93v1M/s1600/22131.png" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br />
解題觀念:</div>
<div>
<br />
<a name='more'></a><br /></div>
<div>
題目意思簡單來說,就是要將句子的雙引號改成其他符號。</div>
<div>
<br /></div>
<div>
<span style="color: red;">前雙引號要改成 「 ˋˋ」 ;後雙引號改成「 ' ' 」。</span></div>
<div>
<b>(*建議直接複製題目格是比較不會出錯。)</b></div>
<div>
<br /></div>
<div>
所以這題的重點在於,如何<b><span style="color: red;">判斷是前雙引號還是後雙引號</span></b>。</div>
<div>
<br /></div>
<div>
<span style="color: blue;">將第一次出現的雙引號標示為1,第二次出現的雙引號標示為0,之後去判斷現在為1還是0之後再印出。</span></div>
<div>
<br /></div>
<div>
寫出這個判斷式,這題基本上就結束了。(見解題步驟)</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
解題步驟:</div>
<div>
<br /></div>
<div>
<b>設定一變數count的值為1,等等要用在判斷是否為前雙引號的條件。</b></div>
<div>
<br /></div>
<div>
使用者輸入字串這不用再多說,之後設定for迴圈,用來抓取字元判斷是否為雙引號。</div>
<div>
<br /></div>
<div>
如果是雙引號,再進入判斷式,判斷count是否等於1(剛剛已在前面設定),是的話則將雙引號改成「ˋˋ」,</div>
<div>
<br /></div>
<div>
之後將再<span style="color: red;">用1-count,使count的值變為0</span>,下次再進入判斷式時,就知道這個雙引號為後雙引號,則會印出「 ' ' 」。</div>
<div>
<br /></div>
<div>
(<span style="color: blue;">*註:為甚麼要用1-count而不是用count-1?? </span></div>
<div>
<span style="color: blue;"> 因為當count=0,遇到1-0才會等於1,如果用count-1,會變成0-1=-1,而造成判斷失誤!!</span>)</div>
<div>
<br /></div>
<div>
<b>遇到不是雙引號的字母,則不改變照原樣印出。</b></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
EX:</div>
<div>
<br /></div>
<div>
"To be or not to be," quoth the Bard, "that is the question."</div>
<div>
<br /></div>
<div>
進入for迴圈抓取第一個字元,為雙引號,</div>
<div>
<br /></div>
<div>
再進入判斷式count是否等於1,符合,判斷為前雙引號,改為「 ˋˋ 」。</div>
<div>
<br /></div>
<div>
這時候的count值為0。(count=1-1=0)</div>
<div>
<br /></div>
<div>
之後繼續抓取字元,字母為原樣印出,抓取到第二十一個字元,為雙引號,</div>
<div>
<br /></div>
<div>
再進入判斷式count是否等於1,不符合,判斷為後雙引號,改為「 ' ' 」。</div>
<div>
<br /></div>
<div>
(後面以此類推)</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
BY 小K</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
KPhttp://www.blogger.com/profile/17803929247953368563noreply@blogger.com0tag:blogger.com,1999:blog-4144959627260631091.post-24100759477411890812013-09-06T09:57:00.004+08:002014-08-21T03:09:26.231+08:00[導覽]解題快速搜索<br />
<h4>
<span style="font-size: large;">
** 按<span style="color: red;"><b>Ctrl+F</b></span>,<b>輸入題目關鍵字或題號</b>可增加搜尋效率喔!!</span></h4>
<br />
<span style="font-size: small;"><br /></span>
<span style="font-size: small;"><a href="http://kpeggy.blogspot.tw/2014/04/javadooms-day-algorithm.html"><b></b></a><b><a href="http://kpeggy.blogspot.tw/2014/04/javadooms-day-algorithm.html" style="background-color: white;"><span style="color: blue;">A - Doom's Day Algorithm</span></a></b>-<span style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;">CPE22801、UVA12019</span></span><br />
<span style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: small; line-height: 18px;"><br /></span>
<span style="font-size: small;"><b><a href="http://kpeggy.blogspot.tw/2013/07/javathe-hotel-with-infinite-rooms.html"><span style="color: blue;">The Hotel with Infinite Rooms</span></a></b>-<span style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;">CPE 10417、UVA 10170</span></span><br />
<span style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: small; line-height: 18px;"><br /></span>
<span style="font-size: small;"><b><a href="http://kpeggy.blogspot.tw/2013/07/javaodd-sum.html"><span style="color: blue;">Odd Sum</span></a></b>-<span style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;">CPE 10453、UVA 10783</span></span><br />
<span style="font-size: small;"><br /></span>
<span style="font-size: small;"><b><a href="http://kpeggy.blogspot.tw/2013/07/javayou-can-say-11.html"><span style="color: blue;">You can say 11.</span></a></b>-<span style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;">CPE 10460、UVA 10929</span></span><br />
<span style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: small; line-height: 18px;"><br /></span>
<span style="font-size: small;"><b><a href="http://kpeggy.blogspot.tw/2013/07/blog-post.html"><span style="color: blue;">The 3n + 1 Problem</span></a></b>-<span style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;">CPE 10400、UVA 100</span></span><br />
<span style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: small; line-height: 18px;"><br /></span>
<span style="font-size: small;"><b><a href="http://kpeggy.blogspot.tw/2013/07/javasumming-digits.html"><span style="color: blue;">Summing Digits</span></a></b>-<span style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;">CPE 10473、UVA 11332</span></span><br />
<span style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: small; line-height: 18px;"><br /></span>
<span style="font-size: small;"><b><a href="http://kpeggy.blogspot.tw/2013/07/javaback-to-high-school-physics.html"><span style="color: blue;">Back to High School Physics</span></a></b>-<span style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;">CPE 10411、UVA 10071</span></span><br />
<span style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: small; line-height: 18px;"><br /></span>
<span style="font-size: small;"><b><a href="http://kpeggy.blogspot.tw/2013/07/javadecode-mad-man.html"><span style="color: blue;">Decode the Mad Man</span></a></b>-<span style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;">CPE 10425、UVA 10222</span></span><br />
<span style="font-size: small;"><br /></span>
<span style="font-size: small;"><b><a href="http://kpeggy.blogspot.tw/2013/07/javafunny-encryption-method.html"><span style="color: blue;">Funny Encryption Method</span></a></b>-<span style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;">CPE 10403、UVA 10019</span></span><br />
<span style="font-size: small;"><br /></span>
<span style="font-size: small;"><b><a href="http://kpeggy.blogspot.tw/2013/07/javabeat-spread.html"><span style="color: blue;">Beat the Spread</span></a></b>-<span style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;">CPE 10454、UVA 10812</span></span><br />
<span style="font-size: small;"><br /></span>
<span style="font-size: small;"><b><a href="http://kpeggy.blogspot.tw/2013/08/javasquare-numbers.html"><span style="color: blue;">Square Numbers</span></a></b>-<span style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;">CPE 10480、UVA 11461</span></span><br />
<span style="font-size: small;"><br /></span>
<span style="font-size: small;"><b><a href="http://kpeggy.blogspot.tw/2013/09/javacommon-permutation.html"><span style="color: blue;">Common Permutation</span></a></b>-<span style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;">CPE 10567、UVA 10252</span></span><br />
<span style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: small; line-height: 18px;"><br /></span>
<span style="font-size: small;"><b><a href="http://kpeggy.blogspot.tw/2013/09/javatex-quots.html"><span style="color: blue;">TeX Quots</span></a></b>-CPE 22131、UVA 272</span><br />
<span style="font-size: small;"><br /></span>
<br />
<div class="post-title entry-title" itemprop="name">
<span style="font-size: small;"><b><a href="http://kpeggy.blogspot.tw/2013/10/javahashmat-brave-warrior.html"><span style="color: blue;">Hashmat the Brave Warrior</span></a></b>-CPE10407、UVA10055</span></div>
<div class="post-title entry-title" itemprop="name">
<span style="font-size: small;"><br /></span></div>
<div class="post-title entry-title" itemprop="name">
<span style="font-size: small;"><b><a href="http://kpeggy.blogspot.tw/2013/10/javaparity.html"><span style="color: blue;">Parity</span></a></b>-CPE 10461、UVA 10931</span><br />
<span style="font-size: small;"> <span style="color: blue;"><span style="font-weight: normal;"> </span></span></span><br />
<span style="font-size: small;"><b><a href="http://kpeggy.blogspot.tw/2013/10/javalet-me-count-ways.html"><span style="color: blue;">Let Me Count The Ways</span></a></b><span style="color: blue;"><span style="font-weight: normal;"><span style="color: black;">-UVA 357</span></span></span></span><br />
<span style="font-size: small;"><br /></span>
<br />
<div class="post-title entry-title" itemprop="name">
<span style="font-size: small;"><b><a href="http://kpeggy.blogspot.tw/2013/10/javajolly-jumpers.html#more"><span style="color: blue;">Jolly Jumpers</span></a></b>-CPE 10405、UVA 10038</span></div>
<span style="font-size: small;"><br /></span>
<br />
<div class="post-title entry-title" itemprop="name">
<span style="font-size: small;"><b><a href="http://kpeggy.blogspot.tw/2013/11/javasimply-emirp.html#more"><span style="color: blue;">Simply Emirp</span></a></b>-CPE 10428、UVA 10235</span><br />
<span style="font-size: small;"><br /></span>
<br />
<div class="post-title entry-title" itemprop="name">
<span style="color: blue; font-size: small;"><span style="color: black;"><b><span style="color: blue;"><a href="http://kpeggy.blogspot.tw/2013/12/javaproduct.html" target="_blank"><span style="color: blue;">Product</span></a></span></b>-</span></span><span style="font-size: small;">CPE10526、UVA10106</span><br />
<span style="font-size: small;"><br /></span>
<br />
<div class="post-title entry-title" itemprop="name">
<span style="color: blue; font-size: small;"><span style="color: black;"><b><span style="color: blue;"><a href="http://kpeggy.blogspot.tw/2014/01/javawhats-cryptanalysis.html" target="_blank"><span style="color: blue;">What's Cryptanalysis?</span> </a></span></b>-CPE 10402、UVA 10008</span></span><br />
<span style="font-size: small;"><br /></span>
<br />
<div class="post-title entry-title" itemprop="name">
<span style="font-size: small;"><b><span style="color: blue;"><a href="http://kpeggy.blogspot.tw/2014/01/javavitos-family.html" target="_blank"><span style="color: blue;">Vito's family</span></a></span></b> <span style="color: black;">-CPE 10406、UVA 10041</span></span><br />
<span style="color: black; font-size: small;"><br /></span>
<span style="font-size: small;"><b><span style="color: blue;"><a href="http://kpeggy.blogspot.tw/2014/01/javatell-me-frequencies.html" target="_blank"><span style="color: blue;">Tell me the frequencies!</span></a></span></b> -CPE 10410、UVA 10062</span><br />
<span style="font-size: small;"><br /></span>
<br />
<div class="post-title entry-title" itemprop="name">
<span style="font-size: small; font-weight: normal;"><b><a href="http://kpeggy.blogspot.tw/2014/03/javafibonaccimal-base.html"><span style="color: blue;">Fibonaccimal Base</span></a></b> - CPE 10401、UVA 948</span><span style="color: blue; font-size: small;"><span style="font-weight: normal;"><span style="color: blue;"> </span></span></span><br />
<span style="font-size: small;"><br /></span>
<span style="color: blue; font-size: small;"><span style="color: black;"><b><a href="http://kpeggy.blogspot.tw/2014/03/javawertyu.html"><span style="color: blue;">WERTYU</span></a></b>- CPE 10412、 UVA 10082</span></span><br />
<span style="font-size: small;"><br /></span>
<br />
<div class="post-title entry-title" itemprop="name">
<span style="font-size: small; font-weight: normal;"><b><a href="http://kpeggy.blogspot.tw/2014/04/javawhat-is-median.html"><span style="color: blue;">What is the Median?</span></a> </b>-</span><span style="font-size: small;">CPE 10527、UVA 10107</span><br />
<span style="font-size: small;"><br /></span>
<span style="font-size: small;"><b><a href="http://kpeggy.blogspot.tw/2014/04/java-ones.html"><span style="color: blue;">Ones</span></a></b>-CPE 10532、UVA 10127 </span><br />
<br />
<div class="post-title entry-title" itemprop="name">
<span style="font-size: small; font-weight: normal;"><b><a href="http://kpeggy.blogspot.tw/2014/06/uvadivide-but-not-quite-conquer.html#more"><span style="color: blue;"><b>Divide, But Not Quite Conquer!</b></span></a></b><span style="font-size: small;">-CPE 10419、UVA 10190</span><br />
<br />
</span><br />
<div class="post-title entry-title" itemprop="name">
<span style="font-size: small; font-weight: normal;"><span style="font-size: small; font-weight: normal;"><b><a href="http://kpeggy.blogspot.tw/2014/06/uvanice-licence-plates.html"><span style="color: blue;">Nice Licence Plates</span></a></b>-UVA 12602</span></span><br />
<br />
<div class="post-title entry-title" itemprop="name">
<span style="font-size: small;"><b><a href="http://kpeggy.blogspot.tw/2014/08/uvavery-easy.html#more"><span style="color: blue;">Very Easy!</span></a></b>-UVA 10523</span>
</div>
</div>
<span style="font-size: small; font-weight: normal;">
<span style="font-size: small;"> </span>
</span></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="post-title entry-title" itemprop="name">
<span style="font-size: small;"><br /></span></div>
<div class="post-title entry-title" itemprop="name">
<span style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: small; line-height: 18px;">By 小K 2014/08/21更新</span><span style="font-size: small;">
</span><span style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; line-height: 18px;"><br /></span></div>
KPhttp://www.blogger.com/profile/17803929247953368563noreply@blogger.com0tag:blogger.com,1999:blog-4144959627260631091.post-83854037118975416552013-09-04T14:12:00.002+08:002014-06-17T15:43:50.209+08:00[UVA]Common PermutationCPE 10567、UVA 10252程式解題。<br />
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div>
<br /></div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihcd-lzQxNEhdkwwuudP5fJqWKxUgVM8wFGsmR91xH801OqESPZydZx645e6CUXo7EecqVmLsbcRQ9URfPA1V7u-AwyQ6PoZMXkoKm3qfELW7n_hCq4xVgZGJoHotpLG8NWY5cMdoU6yb1/s1600/10567.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihcd-lzQxNEhdkwwuudP5fJqWKxUgVM8wFGsmR91xH801OqESPZydZx645e6CUXo7EecqVmLsbcRQ9URfPA1V7u-AwyQ6PoZMXkoKm3qfELW7n_hCq4xVgZGJoHotpLG8NWY5cMdoU6yb1/s1600/10567.png" /></a></div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
解題觀念:<br />
<br />
<a name='more'></a><br /></div>
<div>
這題主要是統計兩個字串a~z字元的個數,然後去做比較。<br />
<br />
並且要依照a~z的順序,印出個數較少的字元。(個數為0的字母不用比較)<br />
<br />
所以最重要的兩件事:<br />
<br />
<b>1.統計</b><br />
<b>2.比較大小</b></div>
<div>
<br />
另外,如果最少個數的字母有2個以上,則依照字母順序印出。<br />
(例如a和b都為1,且都是最少個數的字母,則印出ab)<br />
<br />
最後一個重點就是,<span style="color: red;">如何將字母存進陣列統計??</span>==>比如陣列0的位置代表a,1為b,2為c等。<br />
<br />
思考一下,再來看下面的解題步驟吧~<b>(提示:字母a~z小寫的ASCII碼)</b><br />
<br />
<br />
<br />
解題步驟:(**簡單的for迴圈控制我就不多加說明囉!!)<br />
<br />
宣告兩個陣列,分別儲存兩個字串a~z字元的個數。(count_a[]、count_b[])<br />
<br />
在宣告一個陣列,在後面用來找出個數最少的那個字母。(ans[])<br />
<br />
以防萬一,輸入的字串s,我多加一個語法(<span style="color: red;"><b>trim()</b></span>),<span style="color: red;">去除字串中的空白</span>。(預防一下心機測資)<br />
<br />
好,接下來就要解釋將字母存進陣列的辦法。<br />
<br />
<b>陣列的格子都是以數字命名</b>,所以要將抓取到的字母<span style="color: red;">強轉為ASCII碼</span>後,再存入陣列中。<br />
<br />
語法:<span style="color: red;">count_a[(int)(s.charAt(i)-'a')] </span><br />
<br />
例如抓取到的字母為a,將a的ACSII碼減掉a的ASCII碼等於0,存入陣列0的位置,以此類推,b的ACSII碼減掉a的ASCII碼等於1,存入1的位置,這樣就可以設定26個字母各自的房間了!<br />
<br />
之後比較大小,因為是要印出個數最少的字母,所以<span style="color: red;">比較哪一個比較小</span>。<br />
<br />
Java裡面有一種數學函式可以直接使用,是的,看到上面的程式碼就知道了吧~~<br />
<br />
語法:<span style="color: red;">Math.min(count_a[],count_b[])</span><br />
<br />
之後在將字母ASCII碼<span style="color: red;">強轉為字母</span>,印出。(要記得轉換回字母喔!!)<br />
<br />
<br />
<br />
EX:<br />
(為了方便我只取pretty作範例)<br />
pretty<br />
woman<br />
<br />
pretty進入for迴圈,抓取第一個字元,p的ASCII碼為70,減掉a的ASCII碼60,等於9 =>存入count_a[9],count_a[9]=1。<br />
<br />
之後繼續抓取後面的字元,存入相對應的格子裡。woman所做的動作也是一樣的。<br />
<br />
處理完之後,在做比較大小。用for迴圈去尋找個數最少的字母,然後存放到ans[]。<br />
<br />
結果為count_a[4]、count_b[4],字母e出現次數最少,將e的ASCII碼強轉為字母之後,印出。<br />
<br />
<br />
BY 小K<br />
<br /></div>
KPhttp://www.blogger.com/profile/17803929247953368563noreply@blogger.com0