Как найти сумму целых чисел
элементарная задача – формула
По формуле суммы членов арифметической прогрессии искомая сумма равна
Непосредственное суммирование в цикле даст Time Limit.
Определим функцию вычисления модуля числа.
long long abs( long long x)
Читаем входное значение n . Вычисления будем производить в 64-битовом знаковом целочисленном типе. Формула суммы включает в себя два множителя и один делитель. Чтобы избежать переполнения, будем сначала выполнять деление, а затем умножение.
if (n % 2) res = (1 + n) / 2 * n;
else res = n / 2 * (1 + n);
if (n % 2) res = (1 + n) / 2 * (abs(n) + 2);
else res = (abs(n) + 2) / 2 * (1 + n);
printf( «%lld\n» ,res);
Сумма чисел от 1 до N
Онлайн калькулятор поможет найти сумму чисел от одного до N, вычислит сумму натуральных чисел от единицы до указанного числа включительно.
Для сложения определенного количества целых чисел в диапазоне от 1 до заданного значения N используется формула: (N×(N+1))/2
Где N — наибольшее число ряда.
Например сумма чисел от 1 до 100:
(100×(100+1))/2 = 100×(101)/2 = (10100)/2 = 5050
Сумма всех целых чисел от 1 до 100 равна 5050.
Сумма чисел от 1 до 10 = 55
Сумма чисел от 1 до 15 = 120
Пожалуйста напишите с чем связна такая низкая оценка:
Как найти сумму целых чисел
Argument ‘Topic id’ is null or empty
Сейчас на форуме
© Николай Павлов, Planetaexcel, 2006-2023
info@planetaexcel.ru
Использование любых материалов сайта допускается строго с указанием прямой ссылки на источник, упоминанием названия сайта, имени автора и неизменности исходного текста и иллюстраций.
| ООО «Планета Эксел» ИНН 7735603520 ОГРН 1147746834949 |
ИП Павлов Николай Владимирович ИНН 633015842586 ОГРНИП 310633031600071 |
Анализ алгоритма
Если считать сумму при помощи цикла, то в худшем случае (при a = — 2 * 10 9 , b = 2 * 10 9 ) следует совершить до 4 * 10 9 итераций, а это приведет к Time Limit. Воспользуемся формулой суммы арифметической прогрессии. Первый член равен a, последний b, а всего членов b – a + 1. Тогда искомая сумма равна
Следует также отметить, что полученная сумма может не помещаться в тип int. Поэтому при вычислении следует воспользоваться типом long long .
Реализация алгоритма
Читаем входные данные. Вычисляем и выводим ответ.
res = (a + b) * (b — a + 1) / 2;
printf( «%lld\n» ,res);
Java реализация
public class Main
public static void main(String[] args )
Scanner con = new Scanner(System. in );
long a = con .nextLong();
long b = con .nextLong();
long res = ( a + b ) * ( b — a + 1) / 2;
System. out .println( res );
Python реализация
a,b = map( int ,input().split())
res = (a + b) * (b — a + 1) // 2