কম্পিউটার

C++ এ স্ট্রিং হিসাবে উপস্থাপিত বড় সংখ্যাগুলিকে গুণ করুন


স্ট্রিং ফরম্যাটে দুটি সংখ্যা দেওয়া হয়েছে। আমরা তাদের গুন করতে হবে. সমস্যা সমাধানের ধারণাটি হল পূর্ববর্তী অঙ্কের গুণের উত্তর বজায় রাখা এবং বহন করা। আমরা পূর্ববর্তী সংখ্যা গুণন উত্তর ব্যবহার করতে পারি এবং পরবর্তী সেট সংখ্যা গুণ পেতে বহন করতে পারি।

আসুন একটি উদাহরণ দেখি।

ইনপুট

15
2

আউটপুট

30

অ্যালগরিদম

  • স্ট্রিং-এ সংখ্যা শুরু করুন।

  • দৈর্ঘ্যের একটি স্ট্রিং শুরু করুন number_one_length + number_two_length.

  • শেষ থেকে প্রথম সংখ্যার উপর পুনরাবৃত্তি করুন।

    • শেষ থেকে দ্বিতীয় সংখ্যার উপর পুনরাবৃত্তি করুন।

      • দুটি সংখ্যা গুণ করুন এবং সংশ্লিষ্ট পূর্ববর্তী সারির সংখ্যা যোগ করুন।

      • পূর্ববর্তী সারির সংখ্যা আপডেট করুন।

      • রেজাল্ট স্ট্রিং এর আগের ইনডেক্সে ক্যারি স্টোর করুন।

  • 0 যোগ করে অক্ষরকে সংখ্যায় রূপান্তর করুন ফলাফলের প্রতিটি অক্ষরের জন্য অক্ষর।

  • অগ্রণী শূন্য উপেক্ষা করে ফলাফল ফেরত দিন।

বাস্তবায়ন

C++

-এ উপরের অ্যালগরিদমের বাস্তবায়ন নিচে দেওয়া হল
#include <bits/stdc++.h>
using namespace std;
string multiplyTwoNumbers(string num1, string num2) {
   if (num1 == "0" || num2 == "0") {
      return "0";
   }
   string product(num1.size() + num2.size(), 0);
   for (int i = num1.size() - 1; i >= 0; i--) {
      for (int j = num2.size() - 1; j >= 0; j--) {
            int n = (num1[i] - '0') * (num2[j] - '0') + product[i + j + 1];
            product[i + j + 1] = n % 10;
            product[i + j] += n / 10;
      }
   }
   for (int i = 0; i < product.size(); i++) {
      product[i] += '0';
   }
   if (product[0] == '0') {
      return product.substr(1);
   }
   return product;
}
int main() {
   string num1 = "34";
   string num2 = "57";
   if((num1.at(0) == '-' || num2.at(0) == '-') && (num1.at(0) != '-' || num2.at(0) != '-')) {
      cout << "-";
   }
   if(num1.at(0) == '-') {
      num1 = num1.substr(1);
   }
   if(num2.at(0) == '-') {
      num2 = num2.substr(1);
   }
   cout << multiplyTwoNumbers(num1, num2) << endl;
   return 0;
}

আউটপুট

আপনি যদি উপরের কোডটি চালান, তাহলে আপনি নিম্নলিখিত ফলাফল পাবেন।

1938

  1. দুটি সংখ্যা গুণ করার দ্রুততম উপায়

  2. একটি সংখ্যাকে C++ এ 2টি ত্রিভুজাকার সংখ্যার যোগফল হিসাবে উপস্থাপন করা যায় কিনা তা পরীক্ষা করুন

  3. C++ দুইটি সংখ্যাকে গুণ করার জন্য প্রোগ্রাম

  4. C++ এ স্ট্রিং গুণ করুন