相信一些已經出社會當工程師的前輩都解過一題很古老的題目a008: 中文大寫數字
由於當時補零爭議很大最終題目被廢棄了
所以我詢問許多國小老師確認了補零規則
我也把這些規則寫在維基百科上
-個位以前的「0」要寫或讀出來,但連續的0只要寫或讀一個便可。例如:10002 應寫成「一萬零二」。
-若千位不為零,且萬位為零;或者是千萬位不為零,且億位為零,則不需要補讀零。例如:205,000讀作「二十萬五千」。
-說明:若要補零應是「二十『零』萬五千」,而非「二十萬『零』五千」,因為零是在萬位,且後者補法有誤,萬位和千位中間並無其他位數,不能補上任何數字。
-若一組萬進位數皆為零時,則需補零。例如:200005000讀作「二億零五千」
所以補零規則需要按照以上方式
不會像a008的寬鬆補零規則
每筆測資兩個資料 T N
第一個是大小寫(T) 0是小寫 1是大寫
第二個是數字(N)
每個測資點以EOF結束
寫出中文數字的寫法並且大小寫要正確
0注意不管大小寫都是寫零
其餘根據以下陣列來決定
{{"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"}, {"零", "壹", "貳", "參", "肆", "伍", "陸", "柒", "捌", "玖"}}
{{"", "十", "百", "千"}, {"", "拾", "佰", "仟"}}
{"", "萬", "億", "兆", "京", "垓", "秭", "穰", "溝", "澗", "正", "載"}
0 0 1 2 0 20 0 25 1 200 0 205 1 123 0 1050 1 20000 0 200000 1 200500 0 205000 1 210500 0 215000 1 200005000 0 200000500 1 200000000 0 00123 1 001000040040 0 090807060504
零 貳 二十 二十五 貳佰 二百零五 壹佰貳拾參 一千零五十 貳萬 二十萬 貳拾萬零伍佰 二十萬五千 貳拾壹萬零伍佰 二十一萬五千 貳億零伍仟 二億零五百 貳億 一百二十三 壹拾億零肆萬零肆拾 九百零八億零七百零六萬零五百零四
測資點00,10%,0 <= N < 10^12,共20筆
測資點01,20%,0 <= N < 10^24,共200筆
測資點02,30%,0 <= N < 10^36,共2000筆
測資點03,40%,0 <= N < 10^48,共20000筆
測資點00就是範例測資
所以至少要能先過的了測資點00在上傳程式碼
然後不需要做極端優化
測資點03只是防止作弊而已並不會有超時問題
所以大小寫可以寫成2維陣列(如果是用C語言加上字串是字元陣列就會變3維)
本題兩種解法
我本身是用刪去法
將所有數字和位數名稱串好再慢慢刪去
另一種是兩個布林去判斷是否補零
第一個布林判斷十百千補零
第二個布林判斷萬億兆京補零
編號 | 身分 | 題目 | 主題 | 人氣 | 發表日期 |
沒有發現任何「解題報告」
|