Найти количество таких чисел из диапазона от 1 до N, что их сумма цифр делится на K - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Вводятся два числа N и K. Выведите количество чисел из диапазона от 1 до N таких, что их сумма цифр делится на K. мой код зацикливается, не могунайти ошибку.
#include <stdio.h>
 
int main()
{int sum = 0, n, k, i, ost, s = 0;
scanf("%d%d", &n, &k);
for (i = 1; i <= n; i++) {
    sum = 0;
    while (i != 0) {
        ost = i % 10;
        i = i / 10;
        sum = sum + ost;
    }
    printf("%d ", sum);
    if ((sum % k) == 0) s = s+1;
}
printf("%d", s);
}

Решение задачи: «Найти количество таких чисел из диапазона от 1 до N, что их сумма цифр делится на K»

textual
Листинг программы
#include <stdio.h>
 
int main()
{int sum = 0, n, k, i, ost, s = 0, r;
scanf("%d %d", &n, &k);
for (i = 1; i <= n; i++) {
    sum = 0;
    r=i;
    while (r != 0) {
        ost = r % 10;
        r = r / 10;
        sum = sum + ost;
    }
    printf("%d ", sum);
    if ((sum % k) == 0) s = s+1;
}
printf("%d", s);
}

Объяснение кода листинга программы

В этом коде осуществляется подсчет количества чисел из заданного диапазона (от 1 до N), сумма цифр которых делится на K.

  1. В первой строке подключается стандартная библиотека для работы с консолью.
  2. В функции main() определены следующие переменные:
    • sum - переменная для хранения суммы цифр числа;
    • n - переменная для хранения верхнего предела чисел из диапазона;
    • k - переменная для хранения делителя суммы цифр чисел;
    • i - переменная-счетчик чисел из диапазона;
    • ost - переменная для хранения остатка от деления числа на 10;
    • s - переменная для хранения количества чисел, удовлетворяющих условию;
    • r - переменная для хранения числа, сумма цифр которого проверяется.
  3. С помощью функции scanf() вводятся значения переменных n и k.
  4. В цикле for перебираются числа от 1 до n.
  5. Для каждого числа внутри цикла выполняются следующие действия:
    • Переменная sum инициализируется нулем. Переменная r получает значение текущего числа.
    • В цикле while число r уменьшается на единицу до тех пор, пока оно не станет равным нулю.
    • Остаток от деления r на 10 (цифра числа) сохраняется в переменной ost и обновляется значение r.
    • К переменной sum прибавляется значение ost.
    • После окончания цикла while выводится значение переменной sum (пробел после числа).
    • Если сумма цифр числа делится на k без остатка (остаток от деления равен нулю), то к переменной s прибавляется единица.
  6. После окончания цикла for выводится значение переменной s.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.3 из 5
Похожие ответы