मान लीजिए कि हमारे पास दो संख्याएँ हैं जिन्हें अंश और हर कहा जाता है जो एक परिमेय संख्या (अंश / हर) का प्रतिनिधित्व करते हैं। हमें इसका दशमलव निरूपण एक स्ट्रिंग के रूप में करना है। यदि कुछ आवर्ती संख्याएँ हैं, तो उन्हें कोष्ठक से घेरें।
इसलिए, यदि इनपुट अंश =164 हर =3 की तरह है, तो आउटपुट "54.(6)" होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- यदि अंश 0 के समान है, तो −
- वापसी "0"
- एक सरणी को परिभाषित करें उत्तर
- यदि अंश <0 और हर> 0 या अंश> 0 और हर <0, तो -
- उत्तर के अंत में '-' डालें
- divisor :=|numerator|
- लाभांश :=|हर|
- शेष :=भाजक मॉड लाभांश
- x :=(भाजक / लाभांश) को स्ट्रिंग में बदलें
- इनिशियलाइज़ i :=0 के लिए, जब i
करें - उत्तर के अंत में x[i] डालें
- स्ट्रिंग के रूप में उत्तर दें
- . करें
- यदि शेषफल m में नहीं है, तो −
- सम्मिलित करें (उत्तर का पहला तत्व '(') को उत्तर में डालें उत्तर के अंत में
- सम्मिलित करें')'
- लूप से बाहर आएं
- अन्यथा −
- m[शेष] :=उत्तर का आकार
- शेष :=शेष * 10 उत्तर के अंत में
- सम्मिलित करें (शेष / लाभांश) '0' को संयोजित करें
- शेष :=शेष आधुनिक लाभांश
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
#include <bits/stdc++.h> using namespace std; class Solution { public: string solve(int numerator, int denominator) { if (numerator == 0) return "0"; vector<char> ans; if (numerator < 0 && denominator > 0 || numerator > 0 && denominator < 0) ans.push_back('-'); long divisor = labs(numerator); long dividend = labs(denominator); long remainder = divisor % dividend; string x = to_string(divisor / dividend); for (int i = 0; i < x.size(); i++) { ans.push_back(x[i]); } if (remainder == 0) { return string(ans.begin(), ans.end()); } ans.push_back('.'); map<int, int> m; while (remainder != 0) { if (m.find(remainder) != m.end()) { ans.insert(ans.begin() + m[remainder], '('); ans.push_back(')'); break; } else { m[remainder] = ans.size(); remainder *= 10; ans.push_back((remainder / dividend) + '0'); remainder %= dividend; } } return string(ans.begin(), ans.end()); } }; string solve(int numerator, int denominator) { return (new Solution())->solve(numerator, denominator); } int main() { cout << solve(164, 3); }
इनपुट
164, 3
आउटपुट
54.(6)