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