顯示具有 兩顆星 標籤的文章。 顯示所有文章
顯示具有 兩顆星 標籤的文章。 顯示所有文章

2017年10月8日 星期日

Q263: Number Chains

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


這題就把該字串由大到小剪掉小到大的數串得出的解看是否有重複
ex: 12345
54321-12345=41976
這裡要注意輸出有01234要把頭的0去掉
為了避免TL這邊我用set來儲存不重複的數值

2017年2月21日 星期二

Q256: Quirksome Squares

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


這題你會發現quirksome number是一個完全平方數例如81=9*9,n=4假如有四位數0~9999依序判斷肯定會TL超時
所以我們只要判斷1、4、9、16....到(10^(n/2)-1)*(10^(n/2)-1)
簡單來說當n=4時迴圈從0開始直到100結束,求0~99的完全平方來判斷是否為quirksome number

2016年10月5日 星期三

2016年10月3日 星期一

Q490: Rotating Sentences

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


這題純粹是字串翻轉不過需要一些小技巧才會AC,簡單來說就是把每個字串讀入二維陣列,每次存入之前檢查字數是否為該行最大值,最後翻轉印出來,這裡要確認當該列數小於最大值時要印出空白不然會拋出例外

2016年8月17日 星期三

Q10323 - Factorial! You Must be Kidding!!!

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

這題就是判斷階層結果大於6227020800就Overflow小於1000(不包含負數)Underflow
當負數時偶數-2 -4 -6...為Underflow  奇數-1 -3 -5...為Overflow
先利用DP建立1001個階層表當輸入值大於1000直接Overflow
補充:
比較大小
int i=b1.compareTo(b2)   
i可能為-1、0、1,分别表示小於、等於、大於
i=-1   ==>  b1<b2
i=0   ==>   b1=b2 
i=1   ==>   b1>b2

Q10220 - I Love Big Numbers !

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

這題是算出階層後每一個位數的總和最大測資有1000階層會爆所以要利用大數運算動態配置儲存1000筆資料
叫出每一個位數BigInteger先變成字串toString( )再拆成字元陣列toCharArray( )
注意當0!輸出1

Q623 - 500!

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

這題最大測資有1000階層會爆所以要利用大數運算動態配置儲存1000筆資料

Q455 - Periodic Strings

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

這題要算出最短的重複子字串的字母個數,要注意測資可能有空白行所以要重讀取,而且每個答案之間要多空一行
Periodic String=>http://www.csie.ntnu.edu.tw/~u91029/LongestCommonSubstring.html

Q10298 - Power Strings

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

這題就是要找出最短子字串且算出有幾個重複
程式架構是子字串1~n一個一個去跟原本字串做比對
if(str.length()%sub.length()!=0)

      continue;
這個是判斷子字串是否為原本字串的倍數否就繼續執行下一個迴圈
補充若子字串用String會超時所以必須要用StringBuffer 每次append一個字母進去

2016年8月14日 星期日

Q357: Let Me Count The Ways

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

這是動態規化的問題題目限定範圍所以建立一個30001的陣列,一開始先把全部初始化1
然後再一個個幣值dp[]相加

Q530: Binomial Showdown

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

r取k有公式=>r ! / ( r - k ) ! * k ! ,也就是斯巴卡三角形注意溢位的問題
另外要考慮到 C10取1 跟C10 取9 是一樣的,做一下轉換就能避免超時的問題

2016年8月1日 星期一

Q612 : DNA Sorting

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

困難度 ★★
這題依題意算出每個字串的數字再將之排序把原來的字串從小到大印出來,最後一行不用換行