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

স্ট্রিং আকারে বড় সংখ্যা গুণফল বের করা - সি++

দুটি বড় সংখ্যা স্ট্রিং আকারে দেওয়া থাকলে তাদের গুণফল বের করতে হবে। সাধারণ গুণন পদ্ধতি ব্যবহার করে প্রতিটি অঙ্ক গুণ করে ক্যারি (carry) হ্যান্ডল করা হয়।

উদাহরণ

ইনপুট: "15", "2" → আউটপুট: "30"

ইনপুট: "34", "57" → আউটপুট: "1938"

অ্যালগরিদম

  • দুটি স্ট্রিং নিন।
  • ফলাফল স্ট্রিং আকার = len1 + len2।
  • পিছন থেকে লুপ চালিয়ে প্রতিটি অঙ্ক গুণ করুন এবং ক্যারি হ্যান্ডল করুন।
  • শেষে অপ্রয়োজনীয় লিডিং জিরো বাদ দিন।

সি++ ইমপ্লিমেন্টেশন

#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 mul = (num1[i] - '0') * (num2[j] - '0') + (product[i + j + 1] - '0');
            product[i + j + 1] = (mul % 10) + '0';
            product[i + j] += mul / 10;
        }
    }
    // লিডিং জিরো বাদ দিন
    size_t pos = product.find_first_not_of('0');
    return (pos != string::npos) ? product.substr(pos) : "0";
}

int main() {
    string num1 = "34", num2 = "57";
    // ঋণাত্মক হ্যান্ডলিং
    bool neg = false;
    if (num1[0] == '-' && num2[0] != '-') { neg = true; num1 = num1.substr(1); }
    else if (num2[0] == '-' && num1[0] != '-') { neg = true; num2 = num2.substr(1); }
    else if (num1[0] == '-' && num2[0] == '-') { num1 = num1.substr(1); num2 = num2.substr(1); }
    string res = multiplyTwoNumbers(num1, num2);
    if (neg && res != "0") cout << '-';
    cout << res << endl;
    return 0;
}

আউটপুট

1938
  1. দুটি সংখ্যা গুণ করার দ্রুততম পদ্ধতি (Fastest Way to multiply two Numbers)

  2. C++ প্রোগ্রাম: সংখ্যা ২টি ট্রায়্যাঙ্গুলার নাম্বারের যোগফল কিনা চেক

  3. দুই সংখ্যা গুণ করার C++ প্রোগ্রাম (অপারেটর দিয়ে এবং ছাড়া)

  4. C++-এ স্ট্রিং গুণফল