天天看點

[BASIC-20] 數的讀法

基礎練習 數的讀法  

時間限制:1.0s   記憶體限制:512.0MB

問題描述

  Tom教授正在給研究所學生講授一門關于基因的課程,有一件事情讓他頗為頭疼:一條染色體上有成千上萬個堿基對,它們從0開始編号,到幾百萬,幾千萬,甚至上億。

  比如說,在對學生講解第1234567009号位置上的堿基時,光看着數字是很難準确的念出來的。

  是以,他迫切地需要一個系統,然後當他輸入12 3456 7009時,會給出相應的念法:

  十二億三千四百五十六萬七千零九

  用漢語拼音表示為

  shi er yi san qian si bai wu shi liu wan qi qian ling jiu

  這樣他隻需要照着念就可以了。

  你的任務是幫他設計這樣一個系統:給定一個阿拉伯數字串,你幫他按照中文讀寫的規範轉為漢語拼音字串,相鄰的兩個音節用一個空格符格開。

  注意必須嚴格按照規範,比如說“10010”讀作“yi wan ling yi shi”而不是“yi wan ling shi”,“100000”讀作“shi wan”而不是“yi shi wan”,“2000”讀作“er qian”而不是“liang qian”。

輸入格式

  有一個數字串,數值大小不超過2,000,000,000。

輸出格式

  是一個由小寫英文字母,逗号和空格組成的字元串,表示該數的英文讀法。

樣例輸入

1234567009

樣例輸出

shi er yi san qian si bai wu shi liu wan qi qian ling jiu

分析:基本思路就以樣例輸入為例:String str = “1234567009”

1、把 str 從右到左拆分成 4 位一組,就是 “ 12 億 3456 萬 7009 ” 這樣的形式。“ 幾千幾百幾十幾 ” 這樣4位一組的形式比較好讀,讀完加上機關 “億” “萬” 即可,考慮到一般情況,最左邊的一組可能不足 4 位,不足 4 位的需要單獨處理

2、由于這道題需要判斷的地方太多了,詳細解題思路我就不細說了,大家可以自己多舉幾個例子,然後參考下面的程式慢慢梳理思路

      (一點兒小牢騷):針對這道題,我發現藍橋杯的測評資料不夠全面,我剛開始寫了一個考慮不夠全面的算法程式送出上去都是 100 分,對此我很是無語。而且,通過近段時間做的這麼些題,我發現藍橋杯對輸出資料的顯示格式要求也不是很嚴格,特别是在行末空白字元的處理上,多一個少一個似乎都沒有多大關系。綜合這些,我隻能說藍橋杯跟ACM相比,還是有差距的啊!