Другие языки программирования и технологии

Требуется найти минимальное натуральное число с суммой цифр 123, которое делится на 1237 кто знаетпомогите алгоритмом!

единственное, что пришло в голову, это обходить по порядку все числа с суммой цифр = 123. получается достаточно быстро.
алгоритм:

находим минимальное число с суммой цифр = 123 (в начале остаток от деления 123 на 9, в конце (123 / 9) девяток) . т. е. в нашем случае число 49999999999999
далее в цикле
если остаток от деления на 1237 равен нулю - решение найдено.
если нет - находим в числе первую справа цифру N, которую можно увеличить на единицу без переноса, и после которой есть хотя бы одна ненулевая цифра. в нашем случае это первая цифра (4)
подсчитываем сумму цифр справа от N, уменьшаем ее на единицу (9*13 - 1 = 116)
записываем в правую часть минимальное число с суммой цифр равной найденной сумме (8999999999999)
цифру N увеличиваем на единицу. (получается число 78999999999999)

C http://pastebin.com/M3RRsD1g
Perl http://pastebin.com/mi5PP6pP

# time ./num
WIN! counter=1592 number=199789999899999

real 0m0.004s
user 0m0.001s
sys 0m0.004s
Александр Пономарев
Александр Пономарев
7 027
Лучший ответ
Александр Пономарев пардон, опечатался - первое число 69999999999999 а не 49999999999999
Александр Пономарев паскаль http://pastebin.com/0yPJ7F3e
Берешь все цифры кратные 1237 и проверяешь, какая у них сумма цифр.. . Только это нужно специальные очень типы данных использовать. Начинать с числа 9999999999401 (в сумме 95) и далее, прибавляя каждый раз по 1237. Рекомендую для реализации алгоритма использовать язык Python.
SB
Sahib Bagirov
68 377
Владимир Козьменко нееее))) тут дело посложнее алгоритмы этого вида не проканают полчаса ждал не сработало
получил число но не минимальное (почемуто)
решение в лоб:

_старт_ = 1237;
пока сумма цифр в _старт_ не равна 123
_старт_ = _старт_ + 1237
Ответ:
12371237123712371237123712379896

Думаю, теперь алгоритм должен быть понятен :)
Sahib Bagirov Угу... Здорово.
Роберт Фазилов А где доказательство, что не существует меньших чисел, удовлетворяющих поставленным условиям?
Владимир Козьменко да неправильно это число по любому должно быть меньше чем 19978999989977634 кста это мой ответ не ошибочный ,лан ща еще посарю

Похожие вопросы