diff --git a/bin/examples/math/main.cpp b/bin/examples/math/main.cpp index 63d11a6..e17e44f 100644 --- a/bin/examples/math/main.cpp +++ b/bin/examples/math/main.cpp @@ -13,6 +13,9 @@ auto main(int argc, char *argv[]) -> int int a1 = -4, b1 = -5; hack::log()(hack::math::max_abs(a1, b1)); + + // 1, 2, 3, 4, 5 + hack::log()(hack::math::sum_arithmetic_progression(1, 1, 5)); return 0; } diff --git a/src/hack/math/math.hpp b/src/hack/math/math.hpp index 5a0899d..93e3ba3 100755 --- a/src/hack/math/math.hpp +++ b/src/hack/math/math.hpp @@ -31,4 +31,14 @@ namespace hack::math { return std::abs(a) < std::abs(b) ? a : b; } + + // Функция для вычисления суммы арифметической прогрессии + // a1 - первый член + // d - разность (шаг) + // n - количество членов + inline long long sum_arithmetic_progression(long long a1, long long d, std::size_t n) { + // Формула суммы: S = n * (2*a1 + (n-1)*d) / 2 + // см. wiki/math + return n * (2 * a1 + (n - 1) * d) / 2; + } }