কম্পিউটার টিউটোরিয়াল

সি++-এ রেশনাল নম্বর থেকে ডেসিম্যাল রিপ্রেজেন্টেশন (রিকারিং পার্ট ব্র্যাকেটে) বের করা


সমস্যা বিবরণ

numerator এবং denominator দেওয়া আছে। numerator/denominator-এর ডেসিম্যাল রিপ্রেজেন্টেশন স্ট্রিং হিসেবে রিটার্ন করুন। রিকারিং (আবৃত্ত) দশমিকাংশ থাকলে সেটি ব্র্যাকেটে ঘেরে দিন।

উদাহরণ: 164/3 = 54.(6)।

সমাধানের পদ্ধতি

  1. সাইন হ্যান্ডেল করুন (নেগেটিভ হলে - যোগ করুন)।
  2. পূর্ণসংখ্যা অংশ: numerator / denominator।
  3. ভাগশেষ remainder = numerator % denominator।
  4. যদি ভাগশেষ ০ হয় → পূর্ণসংখ্যা রিটার্ন করুন।
  5. দশমিক পয়েন্ট যোগ করুন।
  6. হ্যাশ ম্যাপ remainder -> position ব্যবহার করুন।
  7. লুপ: remainder *= 10, ডিজিট = remainder / denominator, remainder %= denominator।
  8. যদি ভাগশেষ রিপিট হয় → ঐ পজিশনে ( এবং শেষে ) যোগ করুন।

উদাহরণ কোড

#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)) ans.push_back('-');
        long divisor = labs(numerator);
        long dividend = labs(denominator);
        long remainder = divisor % dividend;
        string x = to_string(divisor / dividend);
        for (char c : x) ans.push_back(c);
        if (remainder == 0) return string(ans.begin(), ans.end());
        ans.push_back('.');
        unordered_map<long, int> m;
        while (remainder != 0) {
            if (m.count(remainder)) {
                ans.insert(ans.begin() + m[remainder], '(');
                ans.push_back(')');
                break;
            }
            m[remainder] = ans.size();
            remainder *= 10;
            ans.push_back((remainder / dividend) + '0');
            remainder %= dividend;
        }
        return string(ans.begin(), ans.end());
    }
};

int main() {
    cout << solve(164, 3);
    return 0;
}

ইনপুট ও আউটপুট

ইনপুট: 164, 3

আউটপুট: 54.(6)

  1. C++ প্রোগ্রাম: হেক্সাডেসিমেল থেকে ডেসিমেল কনভার্সন

  2. C++-এ ডেসিমেল থেকে হেক্সাডেসিমেল কনভার্সন প্রোগ্রাম

  3. C++-এ ডেসিমেল থেকে বাইনারি কনভার্সন প্রোগ্রাম

  4. C++ প্রোগ্রাম: দশমিক (Decimal) থেকে বাইনারি (Binary) রূপান্তর