А329. Квадрат суммы цифр числа

Задача

Задача из сборника задач по программированию Абрамова С.А. 2000 г.
Даны натуральные числа $n$, $m$. Получить все меньшие $n$ натуральные числа, квадрат суммы цифр которых равен $m$.

Вводные данные

Два положительных числа $n$ и $m$.

Выходные данные

Все целые числа из $(0,n)$, удовлетворяющие условию.

Тесты

Входные данные Выходные данные
$1234$ $9$ $3$ $12$ $21$ $30$ $102$ $111$ $120$ $201$ $210$ $300$ $1002$ $1011$ $1020$ $1101$ $1110$ $1200$
$100$ $4$ $2$ $11$ $20$
$49$ $49$ $7$ $16$ $25$ $34$ $43$
$1000$ $1$ $1$ $10$ $100$

Код программы

Решение задачи

Для того, чтоб найти каждую цифру числа будем искать остаток от деления на $10$, которым является последняя цифра числа, а затем делить число нацело на $10$, чтоб предпоследняя цифра стала последней. Будем повторять эту операцию пока число не равно $0$. Все полученные цифры числа складываем. Таким способом будем искать сумму цифр каждого целого числа от $1$ до $n-1$, параллельно возводя полученную сумму в квадрат, а результат сравнивая с $m$.

Ссылки

Условие задачи(страница 135)
Код решения на ideone.com

e-olymp 9. N-значные числа

Задача

Найти количество $N$-значных чисел, у которых сумма цифр равна их произведению. Вывести наименьшее среди таких чисел для заданного $(N<10).$

Вводные данные

Число не превышающее $N.$

Выходные данные

В выходном файле через пробел вывести $2$ числа: количество искомых чисел и наименьшее среди них.

Тесты

Входные данные Выходные данные
$1$ $10$ $0$
$2$ $1$ $22$
$4$ $12$ $1124$
$5$ $40$ $11125$
$9$ $144$ $111111129$

Код программы(Цикл)

Решение задачи(Цикл)

Для cлучаев, когда $N=1,$ $N=8$ и $N=9$ сделаем отдельные ситуации и выведем сразу результат, т.к. эти значения долго считаются в основном цикле. Для случаем, когда $1<N<8$ создадим цикл, который создает последовательность $N$-значных чисел. Затем в цикле while (number &gt; 0) считаем сумму и произведение цифр каждого числа из последовательности. Если сумма и произведение равны и переменная minNumberPrinted равна false, (т.e. не найдено еще минимальное число из этой последовательности, что его сумма и произведение цифр равны), то переменной minNumber присвоим минимальное найденное число. Иначе, если сумма и произведение цифр числа равно, просто прибавляем счетчику $1.$ Выводим полученный результат. Задача решена.

Код программы (Массив)

Решение задачи(Массив)

Для решения задачи заранее просчитали все ответы и записали их в массив x. Так как ответы идут подряд составили формулу для вывода искомых значений: для количества чисел у которых сумма цифр совпадает с их произведением — $2n-2,$ для минимального числа — $2n-1.$ Задача решена.

Ссылки

Условие задачи на e-olymp
Код решения 1 на ideone.com (цикл)
Код решения 1 на ideone.com (массив)