El encabezado numérico es parte de la biblioteca numérica en C++ STL. Esta biblioteca consta de funciones y tipos matemáticos básicos, así como arrays numéricas optimizadas y soporte para la generación de números aleatorios. Algunas de las funciones en el encabezado numérico:
- iota
- acumular
- reducir
- producto Interno
- suma_parcial, etc.
Este artículo explica las funciones de acumulación() y parcial_sum() en el encabezado numérico que se pueden usar durante la programación competitiva para ahorrar tiempo y esfuerzo.
1) acumular(): esta función devuelve la suma de todos los valores que se encuentran en un rango entre [primero, último] con la variable suma. Por lo general, encontramos la suma de elementos en un rango particular o una array completa mediante una operación lineal que requiere agregar todos los elementos en el rango uno por uno y almacenarlos en alguna variable después de cada iteración.
Sintaxis:
accumulate(first, last, sum);
o
accumulate(first, last, sum, myfun);
Parámetros:
- primero, último: primeros y últimos elementos del rango cuyos elementos se agregarán
- suma: valor inicial de la suma
- myfun: una función para realizar cualquier tarea específica.
Por ejemplo, podemos encontrar el producto de los elementos entre el primero y el último.
CPP
// C++ program to demonstrate working of accumulate() #include <iostream> #include <numeric> using namespace std; // User defined function int myfun(int x, int y) { // for this example we have taken product // of adjacent numbers return x * y; } int main() { // Initialize sum = 1 int sum = 1; int a[] = { 5, 10, 15 }; // Simple default accumulate function cout << "\nResult using accumulate: "; cout << accumulate(a, a + 3, sum); // Using accumulate function with // defined function cout << "\nResult using accumulate with" "user-defined function: "; cout << accumulate(a, a + 3, sum, myfun); // Using accumulate function with // pre-defined function cout << "\nResult using accumulate with " "pre-defined function: "; cout << accumulate(a, a + 3, sum, std::minus<int>()); return 0; }
Result using accumulate: 31 Result using accumulate withuser-defined function: 750 Result using accumulate with pre-defined function: -29
Consulte este problema de ejemplo para obtener más referencia: Suma de todos los elementos entre k1’th y k2’th elementos más pequeños
2) part_sum( ): Esta función asigna una suma parcial de los elementos correspondientes de una array a cada posición de la segunda array. Devuelve la suma parcial de todo el conjunto de valores que se encuentran entre [primero, último] y lo almacena en otra array b.
Por ejemplo, si x representa un elemento en [primero, último] e y representa un elemento en el resultado, el ys se puede calcular como:
y0 = x0 y1 = x0 + x1 y2 = x0 + x1 + x2 y3 = x0 + x1 + x2 + x3 y4 = x0 + x1 + x2 + x3 + x4
Sintaxis:
partial_sum(first, last, b);
o
partial_sum(first, last, b, myfun);
Parámetros:
- primero, último: primer y último elemento del rango cuyos elementos se agregarán
- b: índice de la array donde se almacenará la suma parcial correspondiente
- myfun: una función definida por el usuario para realizar cualquier tarea específica
CPP
// C++ program to demonstrate working of partial_sum() #include <iostream> #include <numeric> using namespace std; // user defined function int myfun(int x, int y) { // the sum of element is twice of its // adjacent element return x + 2 * y; } int main() { int a[] = { 1, 2, 3, 4, 5 }; int b[5]; // Default function partial_sum(a, a + 5, b); cout << "Partial Sum - Using Default function: "; for (int i = 0; i < 5; i++) cout << b[i] << ' '; cout << '\n'; // Using user defined function partial_sum(a, a + 5, b, myfun); cout << "Partial sum - Using user defined function: "; for (int i = 0; i < 5; i++) cout << b[i] << ' '; cout << '\n'; return 0; }
Partial Sum - Using Default function: 1 3 6 10 15 Partial sum - Using user defined function: 1 5 11 19 29
Este artículo es una contribución de Abhinav Tiwari . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
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