Найти числа в интервале от 1 до n с заданной суммой цифр - C (СИ)
Формулировка задачи:
Найти числа в интервале от 1 до n с заданной суммой цифр.
Ввод с консоли. Вводится два числа. Первое число- n, второе- сумма цифр чисел, которые надо найти.
Ограничения: 1≤n≤20000 время работы программы не более 2 с.
Помогите пожалуйста
Решение задачи: «Найти числа в интервале от 1 до n с заданной суммой цифр»
textual
Листинг программы
#include <stdio.h>
unsigned sum(unsigned value) {
return value ? (value % 10) + sum(value / 10) : 0;
}
int main() {
unsigned i, n, val;
if ((scanf("%u %u", &n, &val) != 2) || !n || 20000 < n) {
return 1;
}
for (i = 0; i < n; ++i) {
if (sum(i) == val) {
printf("%u ", i);
}
}
return 0;
}
Объяснение кода листинга программы
В этом коде реализована функция sum, которая принимает целое число и возвращает сумму его цифр. Затем в функции main пользователю предлагается ввести два числа: n (количество чисел, для которых нужно проверить, равна ли их сумма заданному значению val). Если пользователь ввёл некорректные данные (например, n больше 20000 или не является положительным числом), то программа выводит сообщение об ошибке и завершает своё выполнение.
Если же данные корректны, то программа перебирает числа от 0 до n и проверяет, равна ли сумма их цифр заданному значению val. Если да, то число выводится на экран.