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

সি++ প্রোগ্রাম: বড় সংখ্যার ভাগফল ও অবশিষ্টাংশ নির্ণয়


একটি বড় সংখ্যা (string হিসেবে) 'num' এবং অন্য একটি বড় সংখ্যা 'm' দেওয়া থাকলে, ভাগ করলে ভাগফল কত এবং মডুলাস দিয়ে অবশিষ্টাংশ কত, তা প্রিন্ট করা এই প্রোগ্রামের উদ্দেশ্য।

আউটপুট ফরম্যাট: Remainder = xxx; Quotient = yyy

মনে করুন, num = "14598499948265358486" এবং m = 487 হলে, অবশিষ্টাংশ ৪৩০ এবং ভাগফল ২৯৯৭৬৩৮৫৯৩০৭২৯৬৮৮ হবে।

উদাহরণ

Input: num = "214755974562154868"    m = 17 Output: Remainder = 15    quotient = 12632704386009109 Input: num ="214"    m = 5 Output: Remainder = 4    Quotient = 42

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

  • প্রাথমিকভাবে mod = 0 সেট করা
  • ডান দিক থেকে শুরু করে mod নির্ণয়: mod = (mod * 10 + digit) % m
  • ভাগফল নির্ণয়: quo[i] = mod/m, যেখানে i হলো ভাগফলের পজিশন নম্বর

অ্যালগরিদম

Start    Step 1 → long long ll ঘোষণা    Step 2 → void quotientremainder(string num, ll m) ফাংশনে       vector vec ঘোষণা       ll mod = 0 সেট       Loop For i = 0 to num.size()-1          digit = num[i] - '0' সেট          mod = mod * 10 + digit সেট          quo = mod / m সেট          vec.push_back(quo) কল          mod = mod % m সেট       End loop       mod-এ থাকা অবশিষ্টাংশ প্রিন্ট       zeroflag = 0 সেট       Loop For i = 0 to vec.size()-1          If vec[i] == 0 && zeroflag == 0 then,             Continue          End If          zeroflag = 1 সেট          vec[i] প্রিন্ট       End For       Return    Step 3 → main() ফাংশনে       num = "14598499948265358486" ঘোষণা ও অ্যাসাইন       ll m = 487 ঘোষণা ও অ্যাসাইন       quotientremainder(num, m) কল Stop

উদাহরণ

#include <bits/stdc++.h> using namespace std; typedef long long ll; // বড় সংখ্যার মডুলাস গণনার ফাংশন void quotientremainder(string num, ll m) {    // বড় সংখ্যার মডুলাস সংরক্ষণ    vector<int> vec;    ll mod = 0;    // ধাপে ধাপে ভাগ করা    for (int i = 0; i < num.size(); i++) {       int digit = num[i] - '0';       // বর্তমান অঙ্ক যোগ করে মডুলাস আপডেট       mod = mod * 10 + digit;       // ভাগফল আপডেট       int quo = mod / m;       vec.push_back(quo);       // পরবর্তী ইটারেশনের জন্য মডুলাস আপডেট       mod = mod % m;    }    cout << "\nRemainder : " << mod << "\n";    cout << "Quotient : ";    // শুরুর শূন্য মুছে ফেলার জন্য ফ্ল্যাগ    bool zeroflag = 0;    for (int i = 0; i < vec.size(); i++) {       if (vec[i] == 0 && zeroflag == 0)          continue;       zeroflag = 1;       cout << vec[i];    }    return; } // main ব্লক int main() {    string num = "14598499948265358486";    ll m = 487;    quotientremainder(num, m);    return 0; }

আউটপুট

Remainder : 430 Quotient : 29976385930729688

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

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

  3. C++-এ কিউবের ভলিউম এবং সারফেস এরিয়া বের করার প্রোগ্রাম

  4. জাভা প্রোগ্রাম: ভাগফল এবং অবশিষ্ট গণনা করা