Найти числа в интервале от 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
. Если да, то число выводится на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д