C/C++ 程序求数组乘法除以 n 的余数?

cc++server side programmingprogramming

数组乘法我们将求出给定数组所有元素的乘积。然后根据问题,我们将乘积除以数字 n。我们来举个例子 −

输入:arr[] = { 12, 35, 69, 74, 165, 54};
      N = 47
输出:14

解释

数组类似于 {12, 35, 69, 74, 165, 54},因此乘法将是 (12 * 35 * 69 * 74 * 165 * 54) = 19107673200。现在,如果我们想得到将其除以 47 后的余数,它将是 14。

首先将所有数字相乘,然后取 % 除以 n,然后找到余数,但在这种方法中,如果数字最大为 2^64,则它会给出错误的答案。

示例

#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("余数为 %d", (mul%n));
   return 0;
}

输出

余数为 14

相关文章