मान लीजिए हमें एक धनात्मक पूर्णांक संख्या दी गई है। हमें संख्या को शब्दों में लिखना है; जैसे यदि संख्या "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() नामक एक फंक्शन परिभाषित करें। यह इनपुट लेता है।
- यदि इनपुट 0 के समान है, तो:
- "Zero" लौटाएं
- numbers सरणी में प्रत्येक num के लिए, करें:
- यदि num का दूसरा मान <= इनपुट, तो:
- यदि num का दूसरा मान >= 100, तो:
- result := solve(इनपुट / num का दूसरा मान)
- यदि इनपुट > (इनपुट / num का दूसरा मान) * num का दूसरा मान, तो:
- result := result + " " + solve(इनपुट - (इनपुट / num का दूसरा मान) * num का दूसरा मान)
- अन्यथा:
- result := num का पहला मान + ((यदि इनपुट > num का दूसरा मान, तो: " " + solve(इनपुट - num का दूसरा मान), अन्यथा: ""))
- लूप से बाहर आएं
- यदि num का दूसरा मान >= 100, तो:
- यदि num का दूसरा मान <= इनपुट, तो:
- result लौटाएं
- यदि इनपुट 0 के समान है, तो:
- solve(इनपुट)
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
#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