কম্পিউটার

C++ এ সমান মূলদ সংখ্যা


ধরুন আমাদের দুটি স্ট্রিং আছে, এগুলি হল S এবং T, যার প্রতিটি একটি ধনাত্মক মূলদ সংখ্যাকে প্রতিনিধিত্ব করে, আমাদের পরীক্ষা করতে হবে যে তারা একই সংখ্যার প্রতিনিধিত্ব করে নাকি এখন। মূলদ সংখ্যার পুনরাবৃত্তি অংশ বোঝাতে স্ট্রিং বন্ধনী ব্যবহার করতে পারে।

আমরা জানি যে মূলদ সংখ্যা তিনটি পর্যন্ত অংশ ব্যবহার করে উপস্থাপন করা যেতে পারে:একটি পূর্ণসংখ্যা অংশ, একটি অ-পুনরাবৃত্ত অংশ এবং একটি পুনরাবৃত্তি অংশ। সংখ্যাটি নিম্নলিখিত তিনটি উপায়ের একটিতে উপস্থাপন করা হবে -

  • শুধুমাত্র পূর্ণসংখ্যার অংশ (যেমন 0, 12, 123)

  • IntegerPart.NonRepeatingPart (যেমন 0.5, 1.0, 2.12, 2.0001)

  • IntegerPart.NonRepeatingPart(RepeatingPart>) (যেমন 0.1(6), 0.9(9), 0.00(1212))

উদাহরণস্বরূপ 0.1(6) বা 0.1666(6) বা 0.166(66) উভয়ই 1/6 এর সঠিক উপস্থাপনা৷

সুতরাং, যদি ইনপুটটি S ="0.(52)" এবং T ="0.5(25)" এর মত হয়, তাহলে আউটপুট হবে True।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • একটি ফাংশন সংজ্ঞায়িত করুন f(), এটি S,

    লাগবে
    • i :=S

      এ '(' এর সূচক
    • যদি আমি S দৈর্ঘ্যের মধ্যে থাকি, তাহলে −

      • ভিত্তি :=সূচক 0 থেকে i - 1

        পর্যন্ত S-এর সাবস্ট্রিং
      • rep :=সূচক i + 1 থেকে S এর সাবস্ট্রিং (S - i - 3 এর দৈর্ঘ্য)

      • j শুরু করার জন্য :=0, যখন j <20, আপডেট করুন (j 1 দ্বারা বাড়ান), −

        করুন
        • base :=base + rep

      • আসল মান হিসাবে রিটার্ন বেস

    • প্রকৃত মান হিসাবে S ফেরত দিন

  • প্রধান ফাংশন থেকে নিম্নলিখিতগুলি করুন -

  • সত্য প্রত্যাবর্তন করুন যখন f(S) f(T)

    এর মত হয়

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

#include <bits/stdc++.h>
using namespace std;class Solution {
   public:
   bool isRationalEqual(string S, string T){
      return f(S) == f(T);
   }
   double f(string S){
      auto i = S.find("(");
      if (i != string::npos) {
         string base = S.substr(0, i);
         string rep = S.substr(i + 1, S.length() - i - 2);
         for (int j = 0; j < 20; ++j)
         base += rep;
         return stod(base);
      }
      return stod(S);
   }
};
main(){
   Solution ob;
   cout << (ob.isRationalEqual("0.(52)", "0.5(25)"));
}

ইনপুট

"0.(52)", "0.5(25)"

আউটপুট

1

  1. C++ এ সর্বাধিক দুটি মূলদ সংখ্যা খুঁজুন

  2. C++ এ সমমানের সংখ্যা

  3. C++ এ এমেরপ সংখ্যা

  4. সি++ এ ডুডেনি নম্বর