Задача
Задача из сборника задач по программированию Абрамова С.А. 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$ |
Код программы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
import java.util.*; import java.lang.*; import java.io.*; class Main { public static void main (String[] args) throws java.lang.Exception { Scanner in = new Scanner(System.in); long n, m, t, sum; n = in.nextLong(); m = in.nextLong(); for(long i = 1; i < n; i++) { t = i; sum = 0; while(t != 0) sum += t%10; t /= 10; } if(sum*sum == m) System.out.print(i + " "); } } } |
Решение задачи
Для того, чтоб найти каждую цифру числа будем искать остаток от деления на $10$, которым является последняя цифра числа, а затем делить число нацело на $10$, чтоб предпоследняя цифра стала последней. Будем повторять эту операцию пока число не равно $0$. Все полученные цифры числа складываем. Таким способом будем искать сумму цифр каждого целого числа от $1$ до $n-1$, параллельно возводя полученную сумму в квадрат, а результат сравнивая с $m$.
Ссылки
Условие задачи(страница 135)
Код решения на ideone.com