Computer >> Máy Tính >  >> Lập trình >> lập trình C

C / C ++ Chương trình để Tìm lời nhắc của phép nhân mảng chia cho n?

Nhân mảng ta sẽ tìm được tích của tất cả các phần tử của mảng đã cho. và sau đó theo bài toán, chúng ta sẽ chia tích với số n. hãy lấy một ví dụ -

Input: arr[] = { 12, 35, 69, 74, 165, 54};
      N = 47
Output: 14

Giải thích

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 chia nó cho 47 nó sẽ là 14.

Đầu tiên bội của tất cả các số, sau đó lấy% theo n rồi tìm lời nhắc, Nhưng trong cách tiếp cận này, nếu số tối đa là 2 ^ 64 thì nó đưa ra câu trả lời sai.

Ví dụ

#include <stdio.h>
int main() {
   int arr[] = { 12, 35, 69, 74, 165, 54};
   int len = 6;
   int n = 47 ;
   int mul = 1;
   for (int i = 0; i < len; i++)
      mul = (mul * (arr[i] % n)) % n;
   printf("the remainder is %d", (mul%n));
   return 0;
}

Đầu ra

the remainder is 14