Как найти сумму всех чисел на отрезке

Столкнулся с этой задачей еще давно и так и не дает покоя. Понятно, что циклом решить это затратно по времени, но я нашел и другой выход – арифметическая прогрессия, но тут начало не с 1, а с произвольного элемента, так что тут стандартной формулой не получится.

Конкретизирую вопрос:
Как математически посчитать сумму например от 47 до 72, т.е. 47 + 48+ 49 … + 72 ?


  • Вопрос задан

    более трёх лет назад

  • 27744 просмотра

Стандартной формулой тут получится.
S = (a1+an)*n/2, где a1 — первый член, an — последний, n — количество членов последовательности
Имеем (47+72)*26/2 = 1547

Итого ваша формула: S = (a+b)(b-a+1)/2

Пригласить эксперта

result = ((b+1)*b-(a-1)*a) div 2;
a=1 b=100 result=5050 (именно столько и должно быть, а не 1050)
a=2 b=5 result=14 (2+3+4+5=14)
a=5 b=10 result=45 (5+6+7+8+9+10=45)

Как математически посчитать сумму например от 47 до 72, т.е. 47 + 48+ 49 … + 72 ?

Высчитать сумму первых 72 членов арифметической прогрессии и вычесть из нее сумму первых 46 членов арифметической прогрессии.


  • Показать ещё
    Загружается…

26 мая 2023, в 00:11

3000 руб./за проект

26 мая 2023, в 00:08

2500 руб./за проект

26 мая 2023, в 00:05

5000 руб./за проект

Минуточку внимания

Онлайн калькулятор поможет найти сумму чисел от M до N, определит сумму чисел на промежутке от N1 до N2, найти сумму ряда натуральных чисел в указанном интервале.

Для нахождения суммы чисел от А до Б используется формула: (a+b)×(b-a+1)/2
a — наименьшее число ряда;
b — наибольшее число ряда.

×

Пожалуйста напишите с чем связна такая низкая оценка:

×

Для установки калькулятора на iPhone — просто добавьте страницу
«На главный экран»

Для установки калькулятора на Android — просто добавьте страницу
«На главный экран»

Смотрите также

Помогаю со студенческими работами здесь

Вычислить сумму квадратов всех целых чисел от А до 50
Написать программу которая вычисляет сумму квадратов всех целых чисел от а до 50 (значение а…

Вычислить и отобразить сумму всех целых чисел
Помогите, пожалуйста, решить задачу по программирования на языке C++.
Напишите программу, которая…

Вычислить сумму всех натуральных чисел, лежащих в отрезке [a;b], где a, b — вещественные положительные числа, задаваемые пользователем (a < b)
Вычислить сумму всех натуральных чисел, лежащих в отрезке , где a, b — вещественные положительные…

Вычислить сумму всех целых чисел во введенной строке
написать программу, которая вычисляет сумму всех целых чисел во введенной строке. плиз…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

2

Improve Article

Save Article

Like Article

  • Read
  • Discuss
  • Improve Article

    Save Article

    Like Article

    Given N ranges of the form [L, R], the task is to find the sum of all integers that lie in any of the given ranges.

    Examples:

    Input: arr[] = {{1, 5}, {3, 7}}, N = 2
    Output: 28
    Explanation: The set of integers that exist in one or more ranges is {1, 2, 3, 4, 5 , 6, 7}. Hence  their sum is 28.

    Input: ranges[] = {{-12, 15}, {3, 9}, {-5, -2}, {20, 25}, {16, 20}}
    Output: 247

    Approach: The given problem can be solved by an approach similar to the Merge Overlapping Intervals problem. Below are the steps to follow:

    • Sort the intervals based on increasing order of L.
    • Push the first interval onto a stack and for each interval do the following:
      • If the current interval does not overlap with the stack top, push it.
      • If the current interval overlaps with stack top and right end of the current interval is more than that of stack top, update stack top with the value of right end of current interval.
    • After traversing through all intervals, the remaining stack contains the merged intervals. The sum of the merged intervals can be calculated using formula for the sum of an Arithmetic Progression as the range [L, R] forms an AP with a common difference as 1 and the number of elements as R – L + 1. The sum is ((L + R)*(R-L+1))/2.

    Below is the implementation of the above approach:

    C++

    #include <bits/stdc++.h>

    #define ll long long

    using namespace std;

    ll sumInRange(long L, long R)

    {

        ll Sum = ((R - L + 1) / 2)

          * (2 * L + (R - L));

        return Sum;

    }

    ll calcSum(vector<pair<long, long> > data,

               int n)

    {

        sort(data.begin(), data.end());

        int i, idx = 0;

        for (i = 1; i < n; i++) {

            if ((data[idx].second >=

                 data[i].first)

                || (data[i].first ==

                    data[idx].second + 1)) {

                data[idx].second

                    = max(data[idx].second,

                          data[i].second);

            }

            else {

                idx++;

                data[idx].second = data[i].second;

                data[idx].first = data[i].first;

            }

        }

        ll Sum = 0;

        for (i = 0; i <= idx; i++) {

            Sum += sumInRange(data[i].first,

                              data[i].second);

        }

        return Sum;

    }

    int main()

    {

        vector<pair<long, long> > vec

          = { { -12, 15 },

             { 3, 9 },

             { -5, -2 },

             { 20, 25 },

             { 16, 20 } };

        cout << calcSum(vec, vec.size());

        return 0;

    }

    Java

    import java.util.*;

    class GFG

    {

    static int sumInRange(int L, int R)

    {

        int Sum = ((R - L + 1) / 2)

          * (2 * L + (R - L));

        return Sum;

    }

    static int calcSum(int [][]data,

               int n)

    {

        Arrays.sort(data,(a,b)->{

            return a[0]-b[0];

        });

        int i, idx = 0;

        for (i = 1; i < n; i++) {

            if ((data[idx][1] >=

                 data[i][0])

                || (data[i][0] ==

                    data[idx][1] + 1)) {

                data[idx][1]

                    = Math.max(data[idx][1],

                          data[i][1]);

            }

            else {

                idx++;

                data[idx][1] = data[i][1];

                data[idx][0] = data[i][0];

            }

        }

        int Sum = 0;

        for (i = 0; i <= idx; i++) {

            Sum += sumInRange(data[i][0],

                              data[i][1]);

        }

        return Sum;

    }

    public static void main(String[] args)

    {

        int [][]vec

          = { { -12, 15 },

             { 3, 9 },

             { -5, -2 },

             { 20, 25 },

             { 16, 20 } };

        System.out.print(calcSum(vec, vec.length));

    }

    }

    Python3

    def sumInRange(L, R):

        Sum = ((R - L + 1) // 2) * (2 * L + (R - L))

        return Sum

    def calcSum(data,

                n):

        data.sort()

        idx = 0

        for i in range(1, n):

            if ((data[idx][1] >=

                 data[i][0])

                or (data[i][0] ==

                    data[idx][1] + 1)):

                data[idx][1] = max(data[idx][1],

                                   data[i][1])

            else:

                idx += 1

                data[idx][1] = data[i][1]

                data[idx][0] = data[i][0]

        Sum = 0

        for i in range(idx+1):

            Sum += sumInRange(data[i][0],

                              data[i][1])

        return Sum

    if __name__ == "__main__":

        vec = [[-12, 15],

               [3, 9],

               [-5, -2],

               [20, 25],

               [16, 20]]

        print(calcSum(vec, len(vec)))

    C#

    using System;

    using System.Collections;

    using System.Collections.Generic;

    using System.Globalization;

    class GFG {

      public static void Sort<T>(T[][] data, int col)

      {

        Comparer<T> comparer = Comparer<T>.Default;

        Array.Sort<T[]>(data, (x,y) => comparer.Compare(x[col],y[col]));

      }

      public static int sumInRange(int L, int R)

      {

        int Sum = ((R - L + 1) / 2)  * (2 * L + (R - L));

        return Sum;

      }

      public static int calcSum(int[][] data, int n)

      {

        Sort<int>(data, 0);

        int i = 0;

        int idx = 0;

        for (i = 1; i < n; i++) {

          if ((data[idx][1] >= data[i][0]) || (data[i][0] == data[idx][1] + 1)) {

            data[idx][1] = Math.Max(data[idx][1], data[i][1]);

          }

          else {

            idx++;

            data[idx][1] = data[i][1];

            data[idx][0] = data[i][0];

          }

        }

        int Sum = 0;

        for (i = 0; i <= idx; i++) {

          Sum += sumInRange(data[i][0], data[i][1]);

        }

        return Sum;

      }

      static void Main() {

        int[][] vec = new int[][] {

          new int[] {-12, 15},

          new int[] {3, 9 },

          new int[] {-5, -2 },

          new int[] {20, 25},

          new int[] {16, 20}

        };

        Console.WriteLine(calcSum(vec, vec.Length));

      }

    }

    Javascript

    <script>

           function sumInRange(L, R) {

               let Sum = ((R - L + 1) / 2)

                   * (2 * L + (R - L));

               return Sum;

           }

           function calcSum(data, n) {

               data.sort(function (a, b) { return a.first - b.first })

               let i, idx = 0;

               for (i = 1; i < n; i++) {

                   if ((data[idx].second >=

                       data[i].first)

                       || (data[i].first ==

                           data[idx].second + 1)) {

                       data[idx].second

                           = Math.max(data[idx].second,

                               data[i].second);

                   }

                   else {

                       idx++;

                       data[idx].second = data[i].second;

                       data[idx].first = data[i].first;

                   }

               }

               let Sum = 0;

               for (i = 0; i <= idx; i++) {

                   Sum += sumInRange(data[i].first,

                       data[i].second);

               }

               return Sum;

           }

           let vec

               = [{ first: -12, second: 15 },

               { first: 3, second: 9 },

               { first: -5, second: -2 },

               { first: 20, second: 25 },

               { first: 16, second: 20 }];

           document.write(calcSum(vec, vec.length));

       </script>

    Time Complexity: O(N*log N)
    Auxiliary Space: O(1)

    Last Updated :
    08 Feb, 2023

    Like Article

    Save Article

    Как найти сумму чисел между a и b (вводятся с клавиатуры)? Вот моё решение:

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        int a, b;
    
        cin >> a >> b;
    
        int sum = 0;
    
        for (int i = a; i < b; i++)
        {
            a = a + 1;
            sum = sum + a;
        }
    
        cout << sum;
    }
    

    Пожалуйста, укажите на ошибку. Например, при вводе 5 и 8 выдаёт 21, а должно 13.

    UPD:

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        int a, b;
    
        cin >> a >> b;
    
        int sum = 0;
    
        while (a < b - 1)
        {
            a = a + 1;
            sum = sum + a;
        }
         cout << sum;
    }
    

    Kromster's user avatar

    Kromster

    13.5k12 золотых знаков43 серебряных знака72 бронзовых знака

    задан 6 ноя 2013 в 15:46

    wmt's user avatar

    11

    Ошибка в том, что циклы для вашей задачи не нужны. Ответ находится одной формулой (b - a - 1) * (a + b) / 2.

    ответ дан 6 ноя 2013 в 16:17

    dzhioev's user avatar

    dzhioevdzhioev

    11.6k24 серебряных знака38 бронзовых знаков

    3

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        int a, b;
        cin >> a >> b;
        int sum = 0;
        for (int i = a + 1; i < b; i++)
        {
            sum = sum + i;
        }
        cout << sum;
    }
    

    ответ дан 15 ноя 2013 в 19:19

    OuroborosSK's user avatar

    Понравилась статья? Поделить с друзьями:

    Не пропустите также:

  • Как исправить ошибку плей маркет на планшете
  • Фар край 5 как найти все алтари
  • Как найти центр детали на фрезерном станке
  • Как составить краткое условие задачи в таблице
  • Как найти музыку по аудиодорожке

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии