TGViewer
Art of Code Art of Code @codeof_art · 2.18K subscribers
Post #274 4.57K
// Выберите самый точный вариант вычисления суммы (предполагаем, что числа только положительные)

// Вариант 1
double sum(vector<float> &v) {
return accumulate(v.begin(), v.end(), 0.0);
}

// Вариант 2
double sum(vector<float> &v) {
sort(v.begin(), v.end());
return accumulate(v.begin(), v.end(), 0.0);
}

// Вариант 3
double sum(vector<float> &v) {
sort(v.begin(), v.end(), greater<float>());
return accumulate(v.begin(), v.end(), 0.0);
}


Решение: Самый точный вариант — Вариант 2 (сортировка по возрастанию).

Объяснение:

При суммировании чисел с плавающей точкой возникает проблема потери точности из-за ограниченной мантиссы. Когда мы складываем числа сильно разного порядка, младшие разряды меньшего числа теряются.

Почему Вариант 2 самый точный:

Сортировка по возрастанию `(sort(v.begin(), v.end()))` означает, что мы начинаем суммировать с наименьших чисел

При таком подходе меньшие числа успевают накопиться до того, как будут добавлены к значительно большим числам

Это уменьшает потерю точности, так как числа одного порядка складываются сначала

Почему другие варианты хуже:

Вариант 1: Без сортировки — порядок суммирования произвольный, возможна значительная потеря точности

Вариант 3: Сортировка по убыванию — начинаем с самых больших чисел, и когда к ним добавляются очень маленькие числа, они могут быть полностью проигнорированы из-за ограниченной точности


@codeof_art
@codeof_art
@codeof_art
  • 🔥 6
  • ❤ 2
More from @codeof_art
  1. Sep 22, 2026Новый пост из серии про паттерны на реальном коде. Разбираем штуку, с которой рано или поз…
  2. Sep 21, 2026Полный цикл собесов в Яндекс (Бэкенд 2026) Сейчас студенты наших курсов под чутким сопрово…
  3. Sep 20, 2026❗️ Яндекс открыл Intern Week Offer на стажировку, где всего за неделю ты можешь получить о…
  4. Sep 19, 2026Товарищи, Поступашкам нужны контент мейкеры в основной канал по алгоритмам и другим дисцип…
  5. Sep 17, 2026System Design: backend Сегодня разберём задачу, которую мне давали на собесе в Яндекс. Шту…
  6. Sep 16, 2026В Яндекс без опыта с первого раза Товарищи, продолжаем рассказывать про наших талантливых…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →