Найти числа в интервале от 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. Если да, то число выводится на экран.

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


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

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

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