Dados varios números y un número n, la tarea es imprimir el resto después de multiplicar todo el número dividido por n.
Ejemplos:
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
Enfoque ingenuo: primero multiplique todo el número, luego tome % por n y luego encuentre el resto, pero en este enfoque, si el número es máximo de 2 ^ 64, entonces da la respuesta incorrecta.
Enfoque que evita el desbordamiento: Primero tome un resto o un número individual como arr[i] % n. Luego multiplique el resto con el resultado actual. Después de la multiplicación, vuelva a tomar el resto para evitar el desbordamiento. Esto funciona debido a las propiedades distributivas de la aritmética modular. (a * b) % c = ( ( a % c ) * ( b % c ) ) % c.
// Java program to find // remainder when all // array elements are // multiplied. import java.util.*; import java.lang.*; public class GfG { // Find remainder of arr[0] * arr[1] * // .. * arr[n-1] public static 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 function public static void main(String argc[]) { int[] arr = new int[] { 100, 10, 5, 25, 35, 14 }; int len = 6; int n = 11; // print the remainder of after // multiple all the numbers System.out.println(findremainder(arr, len, n)); } } /* This code is contributed by Sagar Shukla */
9
Consulte el artículo completo sobre Encontrar el resto de la multiplicación de arrays dividido por n para obtener más detalles.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA