📜  C / C++程序,用于查找除以n的数组乘法的余数

📅  最后修改于: 2021-05-28 03:31:07             🧑  作者: Mango

给定多个数字和一个数字n,任务是在将所有数字除以n后再打印余数。

例子:

Input : arr[] = {100, 10, 5, 25, 35, 14}, 
            n = 11
Output : 9
100 x 10 x 5 x 25 x 35 x 14 = 61250000 % 11 = 9

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

避免溢出的方法:首先取一个余数或单个数字,如arr [i]%n。然后将余数乘以当前结果。乘法后,再次取余数以避免溢出。这是由于模块化算术的分布特性而起作用的。 (a * b)%c =((a%c)*(b%c))%c

// C++ program to find
// remainder when all
// array elements are
// multiplied.
#include 
using namespace std;
  
// Find remainder of arr[0] * arr[1] *
// .. * arr[n-1]
int findremainder(int arr[], int len, int n)
{
    int mul = 1;
  
    // find the individual remainder
    // and multiple with mul.
    for (int i = 0; i < len; i++)
        mul = (mul * (arr[i] % n)) % n;
  
    return mul % n;
}
  
// Driver code
int main()
{
    int arr[] = { 100, 10, 5, 25, 35, 14 };
    int len = sizeof(arr) / sizeof(arr[0]);
    int n = 11;
  
    // print the remainder of after
    // multiple all the numbers
    cout << findremainder(arr, len, n);
}
输出:
9

请参阅有关查找除以n的数组乘法余数的完整文章,以了解更多详细信息!

想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。