You are currently viewing Программа на Python для поиска остатка от умножения массива, деленного на n

Программа на Python для поиска остатка от умножения массива, деленного на n

Учитывая несколько чисел и число 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

#to use reduce function import reduce from functools

from functools import reduce

def find_remainder(arr,n):

#use the reduce function to calculate sum

   sum_1=reduce(lambda x,y: x*y,arr)

   remainder=sum_1%n

   print(remainder)

arr=[100,10,5,25,35,14]
n=11
find_remainder(arr,n)

Выход:

9