Bangla numbers normally use 'kuti' (10000000), 'lakh' (100000), 'hajar' (1000), 'shata' (100) while expanding and converting to text. You are going to write a program to convert a given number to text with them.
Input
The input file may contain several test cases. Each case will contain a non-negative number <= 999999999999999.
Output
For each case of input, you have to output a line starting with the case number with four digits adjustment followed by the converted text.
Sample Input
23764
45897458973958
Sample Output
1. 23 hajar 7 shata 64
2. 45 lakh 89 hajar 7 shata 45 kuti 89 lakh 73 hajar 9 shata 58
出處: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=13&page=show_problem&problem=1042
這題就是把數字代進去遞迴求解即可。比較需要注意的是input數字可能會很大,所以我使用long long 資料型態,以及要考慮到input是0的情況,最後注意到output開頭的case數字格式是有特別規範的,需要4個格子並且靠右輸出。
以下是c++程式碼:
#include <iostream>
#include <iomanip>
using namespace std;
void bangla(long long num) {
if (num >= 10000000) {
bangla(num / 10000000);
cout << " kuti";
num %= 10000000;
}
if (num >= 100000) {
bangla(num / 100000);
cout << " lakh";
num %= 100000;
}
if (num >= 1000) {
bangla(num / 1000);
cout << " hajar";
num %= 1000;
}
if (num >= 100) {
bangla(num / 100);
cout << " shata";
num %= 100;
}
if (num)
cout << " " << num;
}
int main() {
long long num;
long long countCase = 0;
while (cin >> num) {
cout << setw(4) << right << ++countCase << ".";
if (num)
bangla(num);
else
cout << " 0";
cout << endl;
}
return 0;
}
沒有留言:
張貼留言