ধরুন আমাদের কাছে লব এবং হর নামে দুটি সংখ্যা রয়েছে যা আকারে একটি মূলদ সংখ্যাকে প্রতিনিধিত্ব করে (লব / হর)। আমরা একটি স্ট্রিং হিসাবে তার দশমিক উপস্থাপনা খুঁজে পেতে হবে. যদি কিছু পুনরাবৃত্ত সংখ্যা থাকে, তাহলে সেগুলিকে বন্ধনী দিয়ে ঘিরে দিন।
সুতরাং, যদি ইনপুটটি অংক =164 হর =3 এর মত হয়, তাহলে আউটপুট হবে "54.(6)"।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- যদি লব 0 এর মত হয়, তাহলে −
- রিটার্ন "0"
- একটি অ্যারে উত্তর সংজ্ঞায়িত করুন
- যদি লব <0 এবং হর> 0 বা লব> 0 এবং হর <0, তাহলে −
- উত্তর শেষে '-' সন্নিবেশ করান
- ভাজক :=|অঙ্ক |
- লভ্যাংশ :=|ডিনোমিনেটর|
- অবশিষ্ট :=ভাজক মোড লভ্যাংশ
- x :=(ভাজক / লভ্যাংশ) স্ট্রিং এ রূপান্তর করুন
- আরম্ভ করার জন্য i :=0, যখন i
করুন - উত্তর শেষে x[i] ঢোকান
- স্ট্রিং হিসাবে উত্তর ফেরত দিন
- করুন
- যদি অবশিষ্টাংশ m এ না থাকে, তাহলে −
- সন্নিবেশ করান (উত্তর সংমিশ্রণের প্রথম উপাদান '(') উত্তরে
- উত্তর শেষে ')' সন্নিবেশ করান
- লুপ থেকে বেরিয়ে আসুন
- অন্যথায় -
- m[remainder] :=উত্তরের আকার
- অবশিষ্ট :=অবশিষ্ট * 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)