4,7K подписчиков

Проект Эйлер 13: Большая сумма

Наконец-то что-то не про делители :)

Задача

Найдите первые десять цифр суммы следующих ста 50-значных чисел.

Наконец-то что-то не про делители :) Задача Найдите первые десять цифр суммы следующих ста 50-значных чисел.

(Чисел очень много, все их сюда вставлять не буду, полностью можно посмотреть здесь: https://projecteuler.net/problem=13)

Решение

Здесь нам дают понять, что обычная арифметика не поможет, так как числа слишком большие. Что ж, напишем своё сложение в столбик.

Загоню данные в строковом виде в массив:

и т.д.
и т.д.

Затем, начиная с позиции в конце строки (pos = L), буду складывать по одной цифре из каждой строки. Все сложенные цифры накапливаются в переносе (carry).

После сложения младший разряд переноса становится цифрой финальной суммы, а перенос делится на 10, и готов к накоплению в следующем разряде.

Наконец-то что-то не про делители :) Задача Найдите первые десять цифр суммы следующих ста 50-значных чисел.-3

В конце перенос всё ещё остаётся – сумма увеличилась на пару разрядов. Поэтому оставшийся перенос также поразрядно добавляется в итоговую сумму в дополнительные старшие разряды, которые были заранее зарезервированы.

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

Ссылка на онлайн-компилятор языка C с текстом программы

Вся подборка задач: