C/C++ 程式查詢陣列相乘後的餘數再除以 n 的方法是什麼?


陣列相乘,我們將會找到所給陣列所有元素的乘積。然後根據該問題,我們將得到的產品除以數字 n。我們舉個例子:

Input: arr[] = { 12, 35, 69, 74, 165, 54};
      N = 47
Output: 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("the remainder is %d", (mul%n));
   return 0;
}

輸出

the remainder is 14

更新於:19-Aug-2019

126 次瀏覽

開啟您的 職業生涯

完成課程以獲得認證

立即開始
廣告
© . All rights reserved.