Sau đây chúng ta sẽ xem cách tính phần còn lại của phép nhân mảng sau khi chia kết quả cho n. Mảng và giá trị của n được cung cấp bởi người dùng. Giả sử mảng giống như {12, 35, 69, 74, 165, 54} vì vậy phép nhân sẽ là (12 * 35 * 69 * 74 * 165 * 54) =19107673200. Bây giờ nếu chúng ta muốn lấy phần dư sau khi lặn này bởi 47 nó sẽ là 14.
Như chúng ta thấy vấn đề này rất đơn giản. chúng ta có thể dễ dàng nhân các phần tử bằng cách sử dụng toán tử mô đun, nó có thể nhận được kết quả. Nhưng vấn đề chính là khi chúng ta tính toán phép nhân, nó có thể vượt quá phạm vi số nguyên, hoặc dài cũng được. Vì vậy, nó có thể trả về một số kết quả không hợp lệ. Để khắc phục sự cố này, chúng tôi sẽ thực hiện theo quy trình này.
Thuật toán
multiRemainder (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
Ví dụ
#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); }
Đầu ra
Remainder: 14