Задать вопрос
@timkin1

Как быстро найти остаток от суммы цифр?

Здравствуйте!

Программе подается число (возможно очень большое), нужно просуммировать все числа до этого числа и найти остаток от деления от числа, которое также подается программе. Если первым параметром дать большое число, то программа выполняется очень долго. Необходимо оптимизировать данный процесс. Как это можно сделать?
Заранее спасибо!
  • Вопрос задан
  • 256 просмотров
Подписаться 1 Простой 7 комментариев
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Разработчик C++
    9 месяцев
    Далее
  • Академия Codeby
    Курс «Анализ защищенности инфраструктуры на основе технологий Active Directory»
    4 месяца
    Далее
  • Академия Codeby
    Курс «Цифровая криминалистика и реагирование на инциденты ОС Linux (DFIR)»
    14 недель
    Далее
Пригласить эксперта
Ответы на вопрос 2
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Если первым параметром дать большое число, то программа выполняется очень долго.

А если вместо суммирования чисел воспользоваться формулой суммы арифметической прогрессии n * (n + 1) / 2 ?
Насколько велико "большое число"?
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
(1+2+...+n)%k = (n*(n+1)/2)%k
= ((n/2)%k * (n+1)%k)%k, для чётных n
= (n%k * ((n+1)/2)%k)%k, для нечётных n
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы