여기서 우리는 결과를 n으로 나눈 후 배열 곱셈의 나머지를 계산하는 방법을 볼 것입니다. 배열과 n 값은 사용자가 제공합니다. 배열이 {12, 35, 69, 74, 165, 54}와 같으므로 곱셈은 (12 * 35 * 69 * 74 * 165 * 54) =19107673200이 됩니다. 이제 이것을 다이빙한 후 나머지를 얻으려면 47이면 14가 됩니다.
우리가 볼 수 있듯이 이 문제는 매우 간단합니다. 요소를 쉽게 곱한 다음 모듈러스 연산자를 사용하여 결과를 얻을 수 있습니다. 그러나 주요 문제는 곱셈을 계산할 때 정수의 범위를 초과하거나 long도 초과할 수 있다는 것입니다. 따라서 일부 잘못된 결과를 반환할 수 있습니다. 이 문제를 극복하기 위해 우리는 이 과정을 따를 것입니다.
알고리즘
multiplyRemainder(arr, 크기, 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