এখানে আমরা দেখব কিভাবে ফলাফলকে n দ্বারা ভাগ করার পর অ্যারের গুণনের অবশিষ্টাংশ গণনা করা যায়। অ্যারে এবং n এর মান ব্যবহারকারী দ্বারা সরবরাহ করা হয়। ধরুন অ্যারেটি {12, 35, 69, 74, 165, 54} এর মতো তাই গুণফল হবে (12 * 35 * 69 * 74 * 165 * 54) =19107673200। এখন আমরা যদি ডাইভ করার পরে অবশিষ্টাংশ পেতে চাই 47 এর মধ্যে এটি 14 হবে।
আমরা দেখতে পাচ্ছি এই সমস্যাটি খুবই সহজ। আমরা মডুলাস অপারেটর ব্যবহার করে উপাদানগুলিকে সহজেই গুণ করতে পারি, এটি ফলাফল পেতে পারে। কিন্তু মূল সমস্যা হল যখন আমরা গুণের হিসাব করি, তখন তা পূর্ণসংখ্যার পরিসীমা অতিক্রম করতে পারে, বা দীর্ঘও হতে পারে। তাই এটি কিছু অবৈধ ফলাফল ফিরিয়ে দিতে পারে। এই সমস্যাটি কাটিয়ে উঠতে, আমরা এই প্রক্রিয়াটি অনুসরণ করব।
অ্যালগরিদম
multiplyRemainder(arr, size, n)
begin mul := 1 for i in range 0 to size – 1, do mul := (mul * (arr[i] mod n)) mod n done return mul mod n end
উদাহরণ
#include<iostream> using namespace std; int multiplyRemainder(int arr[], int size, int n){ int mul = 1; for(int i = 0; i<size; i++){ mul = (mul * (arr[i] % n)) % n; } return mul % n; } int main(){ int arr[6] = {12, 35, 69, 74, 165, 54}; int size = 6; int n = 47; cout << "Remainder: " << multiplyRemainder(arr, size, n); }
আউটপুট
Remainder: 14