0 / 0 / 0
Регистрация: 24.09.2013
Сообщений: 95
|
|
1 | |
Найти все натуральные числа в диапазоне [a, b], которые делятся на каждую из своих цифр17.02.2014, 15:25. Показов 1845. Ответов 4
Метки нет Все метки)
(
0
|
|
17.02.2014, 15:25 | |
Ответы с готовыми решениями:
4
Вывести все натуральные числа из интервала от A до B, которые не делятся ни на 2, ни на 3, ни на 4
Процедуры: на заданном отрезке найти все натуральные числа, сумма цифр которых при умножении числа на a не изменится
|
15137 / 6411 / 1730
Регистрация: 24.09.2011
Сообщений: 9,999
|
||||||
17.02.2014, 16:21 | 2 | |||||
![]() Решение
Считаем, что на 0 делить нельзя.
1
|
Модератор
![]() ![]() |
||||||
17.02.2014, 19:40 | 3 | |||||
![]() Решение
Для больших чисел этот алгоритм будет вычислять лишнее (многократные вычисления остатка при делении на одинаковые цифры). Мне кажется, лучше так:
Код
100 101 102 104 105 110 111 112 115 120 122 124 126 128 132 135 140 144 150 155 162 168 175 184 200
0
|
15137 / 6411 / 1730
Регистрация: 24.09.2011
Сообщений: 9,999
|
||||||
18.02.2014, 12:33 | 4 | |||||
Catstail, не-а!
![]() Вы все равно выделяете каждую цифру. Я сразу проверяю остаток от деления числа на нее - это простая целочисленная операция. А Вы для каждой цифры 2 раза обращаетесь к массиву (на самом деле достаточно 1 раза, D(k%) = 1), а потом еще цикл по массиву. Вот сравнение по времени, диапазон 10млн-20млн: Код
время к-во чисел 2,3125 43952 2,34375 43952 - моя программа 16,64063 207427 17,09375 207427 - Ваша программа как есть 13,53125 43952 13,73438 43952 - Ваша программа с исключением нулей 12,5 43952 12,45313 43952 - D(k%) = 1 Код с измерением времени
1
|
Модератор
![]() ![]() |
|
18.02.2014, 18:19 | 5 |
Доргой Казанский, при таком количестве чисел большое (может быть, решающее) влияние играет то, что мой код оформлен как функция. Влияют накладные расходы на вызов-возврат. Впрочем, я еще покопаюсь...
Добавлено через 4 часа 49 минут Казанский, да обращение к массиву все портит... Добавлено через 3 минуты Но анализ Вашего алгоритма показывает, что при наличии в числе одинаковых цифр, Вы все же повторяете проверку. Как этого избежать (без замедления, как у меня) - не знаю.
0
|
18.02.2014, 18:19 | |
Помогаю со студенческими работами здесь
5
Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр Найти все натуральные числа <= N, которые делятся без остатка на каждую из своих цифр Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |