ধরুন আমাদের একটি ধনাত্মক পূর্ণসংখ্যা দেওয়া হয়েছে। শব্দে সংখ্যা বানান করতে হবে; যেমন একটি সংখ্যা "56" ইনপুট হিসাবে দেওয়া হলে আউটপুট হবে "ছাপ্পান্ন"। রূপান্তরের পরিসীমা এক বিলিয়ন পর্যন্ত।
সুতরাং, যদি ইনপুটটি ইনপুট =5678 এর মত হয়, তাহলে আউটপুট হবে পাঁচ হাজার ছয়শত আটটি।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- একটি অ্যারে 'সংখ্যা' সংজ্ঞায়িত করুন যাতে জোড়া থাকে যেমন − {{"বিলিয়ন", 1000000000},
- {"মিলিয়ন", 1000000}, ৷
- {"হাজার", 1000},
- {"শত", 100},
- {"নব্বই", 90},
- {"আশি", 80},
- {"সেভেন্টি", 70},
- {"ষাট", 60},
- {"পঞ্চাশ", 50},
- {"চল্লিশ", 40},
- {"ত্রিশ", 30},
- {"টুয়েন্টি", 20},
- {"উনিশ", 19},
- {"আঠারো", 18},
- {"সেভেন্টিন", 17},
- {"ষোল", 16},
- {"পনেরো", 15},
- {"চৌদ্দ", 14},
- {"তেরো", 13},
- {"Twelve", 12},
- {"এগারো", 11},
- {"দশ", 10},
- {"নয়", 9},
- {"আট", 8},
- {"সাত", 7},
- {"ছয়", 6},
- {"ফাইভ", 5},
- {"চার", 4},
- {"তিন", 3},
- {"দুই", 2},
- {"এক", 1}}
- একটি ফাংশন সংজ্ঞায়িত করুন সমাধান()। এটি ইনপুট নেয়৷
- যদি ইনপুট 0 এর মত হয়, তাহলে −
- রিটার্ন "জিরো"
- অ্যারে সংখ্যার প্রতিটি সংখ্যার জন্য, করুন
- যদি num এর দ্বিতীয় মান <=ইনপুট হয়, তাহলে −
- যদি num এর দ্বিতীয় মান>=100 হয়, তাহলে −
- ফলাফল :=সমাধান (ইনপুট / সংখ্যার দ্বিতীয় মান)
- যদি ইনপুট> (ইনপুট/সংখ্যার দ্বিতীয় মান) * m এর দ্বিতীয় মান, তাহলে −
- ফলাফল :=ফলাফল + " " + সমাধান (ইনপুট - (ইনপুট / সংখ্যার দ্বিতীয় মান))
- অন্যথায়,
- ফলাফল :=num এর প্রথম মান
- লুপ থেকে বেরিয়ে আসুন
- যদি num এর দ্বিতীয় মান>=100 হয়, তাহলে −
- যদি num এর দ্বিতীয় মান <=ইনপুট হয়, তাহলে −
- ফলাফল
- যদি ইনপুট 0 এর মত হয়, তাহলে −
- সমাধান (ইনপুট)
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
#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