6. Bangla Numbers (CPE10414, UVA10101) - CPE一顆星解答與說明

   👉  CPE 一顆星選集列表(49題) 題目說明與解答


題目



將數字轉成特定文字
  • 10000000(一千萬, 7 個 0) = kuti
  • 100000(十萬, 5 個 0) = lakh
  • 1000(一千, 3 個 0) = hajar
  • 100(一百, 2 個 0) = shata


輸入說明

  • 測試資料有多筆
  • 數字為非負數 (數字都是整數)



輸出說明


  • 印出
    • 測試資料編號(4位數)
    • 數字轉文字的結果


解題技巧

  • 除法的取商數 / 、餘數 %
  • 測資的數字最大值為 999999999999999(15位數),要使用 long 型態
  • 因最大單位是 kuti = 10000000 ( 一千萬, 7 個 0 ),所以要先處理大於 kuti 的資料
    • 以台幣來說,假設最大單位是,再下來是為
      • 數字 12154321 
            ↓ 轉文字 
      • 1 2 15 4 千 3 百 21
            ↓ 觀察文字
      • 之前與之後,都會依序出現千、百單位
  • 重要步驟
    • 第一步驟:先處理大於萬的數字,處理完後,資料尾端要加上
      • 數字 12154321 除以 10000 取商數 = 1215 
            ↓ 轉文字
      •   1 千 2 百 15
    • 第一步驟:處理小於萬的數字
      • 12154321 除以 10000 取餘數 = 4321 
           ↓ 轉文字
      •   4 千 3 百 21
    • 第一步驟 + 第二步驟
      •  1 千 2 百 15 4 千 3 百 21

解題過程

取得輸入


輸出測資的編號

  • 因題目要求編號要有 4 位數
  • 使用 printf 方法
    • System.out.printf(“文字與格式" , 變數1, 變數2, …)
    • System.out.printf(“最大公因數 : %d,最小公倍數 : %d%n", max, min);
    • 換行
      • /r/n
      • %n


判斷數字是否等於 0

  • 等於 0 :印出 0 ,注意數字之前要有一個空白
  • 不等於 0:準備開始進行數字轉文字,每筆測資輸出都要換


開始將文字轉數字

  • 先假設遇到的數字小於一千萬(kuti),例如: 123456
  • 因單位很大,建議直接使用孟加拉語做為變數名稱,去宣告實際的單位,避免手誤多打或是少打 0 

逐一檢查數字

  • 是否大於等於kuti、lakh、hajar、shata
  • 是否大於0



將數字轉文字

  • 取商數
    • 大於此單位的數字:印出數字單位文字注意數字與單位之前都要有空白
  • 取餘數
    • 小於此單位的數字:留著給下一個 if 判斷

調整讓程式可處理大於 kuti 的數字

  • 判斷數字是否等於大於 kuti,假設數字大於 kuti : 45897458973958
    • 先暫存小於 kuti 的數字,45897458973958 除以 kuti 取餘數 = 8973958
      • 等第一階段處理結束,再更新 number 變數為 samllNumber
    • 再處理大於 kuti 的數字, 45897458973958 除以 kuti 取商數 = 4589745
      • 準備開始處理,處理結束要印出 kuti 字串



  • 不管數字是否大於 kuti ,數字轉文字的邏輯是一樣的,差別只在於,大於 kuti 的數字,處理完後要多加上 kuti 的字串
  • 將程式碼宣告成共用方法(建議),或是複製貼上(如果真的忘記怎麼宣告方法的話),即可完成題目要求 

   👉  CPE 一顆星選集列表(49題) 題目說明與解答

留言

這個網誌中的熱門文章

CPE 一顆星選集題目說明與解答 - Java 筆記與心得分享

Visual Studio 自動排版格式化程式碼

1. Vito's family (CPE10406, UVA10041) - CPE一顆星解答與說明