মান লিজिए আমাদের একটি ধনাত্মক পূর্ণসংখ্যা দেওয়া আছে। আমাদের সংখ্যাটিকে শব্দে বানাতে হবে; যেমন যদি "56" নম্বর ইনপুট হিসেবে দেওয়া হয় তবে আউটপুট হবে "Fifty-Six"। রূপান্তরের রেঞ্জ হল এক बिलিয়ন পর্যন্ত।
তাই, যদি ইনপুট হয় input = 5678, তবে আউটপুট হবে Five Thousand Six Hundred Seventy-Eight।
এটি সমাধান করতে, আমরা এই ধাপগুলো ফলো করব:-
- 'numbers' নামে একটি অ্যারে ডিফাইন করুন যেটি পেয়ার ধারণ করে যেমন:- {{"Billion", 1000000000},
- {"Million", 1000000},
- {"Thousand", 1000},
- {"Hundred", 100},
- {"Ninety", 90},
- {"Eighty", 80},
- {"Seventy", 70},
- {"Sixty", 60},
- {"Fifty", 50},
- {"Forty", 40},
- {"Thirty", 30},
- {"Twenty", 20},
- {"Nineteen", 19},
- {"Eighteen", 18},
- {"Seventeen", 17},
- {"Sixteen", 16},
- {"Fifteen", 15},
- {"Fourteen", 14},
- {"Thirteen", 13},
- {"Twelve", 12},
- {"Eleven", 11},
- {"Ten", 10},
- {"Nine", 9},
- {"Eight", 8},
- {"Seven", 7},
- {"Six", 6},
- {"Five", 5},
- {"Four", 4},
- {"Three", 3},
- {"Two", 2},
- {"One", 1}}
- solve() নামে একটি ফাংশন ডিফাইন করুন। এটি input নেয়।
- যদি input ০-এর সমান হয়, তবে -
- return "Zero"
- numbers অ্যারেতে প্রতিটি num-এর জন্য, করুন
- যদি num-এর দ্বিতীয় মান <= input, তবে -
- যদি num-এর দ্বিতীয় মান >= 100, তবে -
- result := solve(input / num-এর দ্বিতীয় মান)
- যদি input > (input / num-এর দ্বিতীয় মান) * num-এর দ্বিতীয় মান, তবে -
- result := result + " " + solve(input - (input / num-এর দ্বিতীয় মান) * num-এর দ্বিতীয় মান)
- অন্যথায়,
- result := num-এর প্রথম মান + ((যদি input > num-এর দ্বিতীয় মান, তবে: " " + solve(input - num-এর দ্বিতীয় মান), অন্যথায়: ""))
- লুপ থেকে বের হোন
- যদি num-এর দ্বিতীয় মান >= 100, তবে -
- যদি num-এর দ্বিতীয় মান <= input, তবে -
- result রিটার্ন করুন
- যদি input ০-এর সমান হয়, তবে -
- solve(input)
উদাহরণ
বेहतर বুঝতে নিচের ইমপ্লিমেন্টেশনটি দেখুন:-
#include<bits/stdc++.h>
using namespace std;
vector<pair<string, int>> numbers{{"Billion", 1000000000},
{"Million", 1000000},
{"Thousand", 1000},
{"Hundred", 100},
{"Ninety", 90},
{"Eighty", 80},
{"Seventy", 70},
{"Sixty", 60},
{"Fifty", 50},
{"Forty", 40},
{"Thirty", 30},
{"Twenty", 20},
{"Nineteen", 19},
{"Eighteen", 18},
{"Seventeen", 17},
{"Sixteen", 16},
{"Fifteen", 15},
{"Fourteen", 14},
{"Thirteen", 13},
{"Twelve", 12},
{"Eleven", 11},
{"Ten", 10},
{"Nine", 9},
{"Eight", 8},
{"Seven", 7},
{"Six", 6},
{"Five", 5},
{"Four", 4},
{"Three", 3},
{"Two", 2},
{"One", 1}};
string solve(int input) {
if (input == 0) return "Zero";
string result;
for (auto& num : numbers) {
if (num.second <= input) {
if (num.second >= 100) {
result = solve(input / num.second) + " " + num.first;
if (input > (input / num.second) * num.second)
result += " " + solve(input - (input / num.second) * num.second);
} else {
result = num.first + (input > num.second ? " " + solve(input - num.second) : "");
}
break;
}
}
return result;
}
int main() {
cout<< solve(5678) <<endl;
return 0;
}
ইনপুট
5678
আউটপুট
Five Thousand Six Hundred Seventy Eight