मान लीजिए हमें एक धनात्मक पूर्णांक संख्या दी गई है। हमें संख्याओं को शब्दों में लिखना है; जैसे अगर इनपुट के रूप में "56" नंबर दिया गया है तो आउटपुट "फिफ्टी-सिक्स" होगा। रूपांतरण की सीमा एक अरब तक है।
इसलिए, यदि इनपुट इनपुट =5678 जैसा है, तो आउटपुट पांच हजार छह सौ अट्ठाइस होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- एक सरणी 'संख्या' को परिभाषित करें जिसमें जोड़े हों जैसे - {{"बिलियन", 1000000000},
- {"मिलियन", 1000000},
- {"हजार", 1000},
- {"सौ", 100},
- {"नब्बे", 90},
- {"अस्सी", 80},
- {"सत्तर", 70},
- {"साठ", 60},
- {"फिफ्टी", 50},
- {"चालीस", 40},
- {"थर्टी", 30},
- {"ट्वेंटी", 20},
- {"उन्नीस", 19},
- {"अठारह", 18},
- {"सत्रह", 17},
- {"सोलह", 16},
- {"पंद्रह", 15},
- {"चौदह", 14},
- {"तेरह", 13},
- {"बारह", 12},
- {"ग्यारह", 11},
- {"दस", 10},
- {"नौ", 9},
- {"आठ", 8},
- {"सात", 7},
- {"छः", 6},
- {"पांच", 5},
- {"चार", 4},
- {"तीन", 3},
- {"दो", 2},
- {"एक", 1}}
- फ़ंक्शन को हल करें () परिभाषित करें। यह इनपुट लेता है।
- यदि इनपुट 0 के समान है, तो −
- "शून्य" लौटाएं
- सरणी संख्या में प्रत्येक अंक के लिए, करें
- यदि संख्या का दूसरा मान <=इनपुट, तो −
- यदि संख्या का दूसरा मान>=100, तो −
- परिणाम:=हल करें (इनपुट / अंक का दूसरा मान)
- यदि इनपुट> (इनपुट/संख्या का दूसरा मान) * m का दूसरा मान, तो −
- परिणाम:=परिणाम + "" + हल (इनपुट - (इनपुट / अंक का दूसरा मान))
- अन्यथा,
- परिणाम :=num + का पहला मान ((यदि इनपुट> num का दूसरा मान, तो:"" + हल करें (इनपुट - num का दूसरा मान), अन्यथा:" "))
- लूप से बाहर आएं
- यदि संख्या का दूसरा मान>=100, तो −
- यदि संख्या का दूसरा मान <=इनपुट, तो −
- वापसी का परिणाम
- यदि इनपुट 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