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; }
沒有留言:
張貼留言