題目連結
題意:
一個十進位的單位唸法轉換
像我們一般說 6958為
6 千 9 百 5 十 8
這些千、百、十分別代表1000, 100, 10
給定一個數字(最大到十進位的15個9)
按照題目要求的單位輸出對應唸法
題目的單位如下:
’kuti’ (10000000) <8位數>
’lakh’ (100000) <6位數>
’hajar’ (1000) <4位數>
’shata’ (100) <3位數>
例如:
23764 = 23 hajar 7 shata 64
因為範圍可能到15位數
超過kuti的要重複編
像是:
45897458973958 =
45 lakh 89 hajar 7 shata 45 kuti 89 lakh 73 hajar 9 shata 58
解法:
因為每7位數一個循環判斷
可以寫一個函式遞迴跑
遇到大於7位,輸出 kuti後
再執行函式,參數放除以10^7後的數
其他幾個單位也可以用相同方式
輸出對應文字後
以除後的數當參數再跑函式即可
須注意,每個數字輸出之前
題目要求要先輸出是第幾個數字
如第一個: 1.
格式是4個字元靠右
可以用printf的%4d表示
另外,百位以下如果是0,如200
0不必輸出,也就是 2 shata
但如果輸入本身是0,又必須輸出 0
這點要想辦法判斷
程式(Java):
題意:
一個十進位的單位唸法轉換
像我們一般說 6958為
6 千 9 百 5 十 8
這些千、百、十分別代表1000, 100, 10
給定一個數字(最大到十進位的15個9)
按照題目要求的單位輸出對應唸法
題目的單位如下:
’kuti’ (10000000) <8位數>
’lakh’ (100000) <6位數>
’hajar’ (1000) <4位數>
’shata’ (100) <3位數>
例如:
23764 = 23 hajar 7 shata 64
因為範圍可能到15位數
超過kuti的要重複編
像是:
45897458973958 =
45 lakh 89 hajar 7 shata 45 kuti 89 lakh 73 hajar 9 shata 58
解法:
因為每7位數一個循環判斷
可以寫一個函式遞迴跑
遇到大於7位,輸出 kuti後
再執行函式,參數放除以10^7後的數
其他幾個單位也可以用相同方式
輸出對應文字後
以除後的數當參數再跑函式即可
須注意,每個數字輸出之前
題目要求要先輸出是第幾個數字
如第一個: 1.
格式是4個字元靠右
可以用printf的%4d表示
另外,百位以下如果是0,如200
0不必輸出,也就是 2 shata
但如果輸入本身是0,又必須輸出 0
這點要想辦法判斷
程式(Java):
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.*; | |
public class Main { | |
public static void calculate(long num) { | |
if (num == 0) | |
return; | |
if (num >= 10000000) { | |
calculate(num/10000000); | |
System.out.print(" kuti"); | |
calculate(num%10000000); | |
} | |
else if (num >= 100000) { | |
System.out.print(" " + num/100000 + " lakh"); | |
calculate(num%100000); | |
} | |
else if (num >= 1000) { | |
System.out.print(" " + num/1000 + " hajar"); | |
calculate(num%1000); | |
} | |
else if (num >= 100) { | |
System.out.print(" " + num/100 + " shata"); | |
calculate(num%100); | |
} | |
else if (num % 100 != 0) | |
System.out.print(" " + num); | |
} | |
public static void main(String args[]) { | |
Scanner sc = new Scanner(System.in); | |
int count = 0; | |
while (sc.hasNextLine()) { | |
count++; | |
long num = Long.parseLong(sc.nextLine()); | |
System.out.printf("%4d.", count); | |
if (num == 0) | |
System.out.printf(" 0"); | |
else | |
calculate(num); | |
System.out.println(); | |
} | |
} | |
} |
留言
張貼留言