единственное, что пришло в голову, это обходить по порядку все числа с суммой цифр = 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
Другие языки программирования и технологии
Требуется найти минимальное натуральное число с суммой цифр 123, которое делится на 1237 кто знаетпомогите алгоритмом!
Александр Пономарев
пардон, опечатался - первое число 69999999999999 а не 49999999999999
Александр Пономарев
паскаль http://pastebin.com/0yPJ7F3e
Берешь все цифры кратные 1237 и проверяешь, какая у них сумма цифр.. . Только это нужно специальные очень типы данных использовать. Начинать с числа 9999999999401 (в сумме 95) и далее, прибавляя каждый раз по 1237. Рекомендую для реализации алгоритма использовать язык Python.
Владимир Козьменко
нееее))) тут дело посложнее алгоритмы этого вида не проканают полчаса ждал не сработало
получил число но не минимальное (почемуто)
получил число но не минимальное (почемуто)
решение в лоб:
_старт_ = 1237;
пока сумма цифр в _старт_ не равна 123
_старт_ = _старт_ + 1237
_старт_ = 1237;
пока сумма цифр в _старт_ не равна 123
_старт_ = _старт_ + 1237
Ответ:
12371237123712371237123712379896
Думаю, теперь алгоритм должен быть понятен :)
12371237123712371237123712379896
Думаю, теперь алгоритм должен быть понятен :)
Sahib Bagirov
Угу... Здорово.
Роберт Фазилов
А где доказательство, что не существует меньших чисел, удовлетворяющих поставленным условиям?
Владимир Козьменко
да неправильно это число по любому должно быть меньше чем 19978999989977634 кста это мой ответ не ошибочный ,лан ща еще посарю
Похожие вопросы
- Найти все натуральные числа, не превосходящие заданного числа n, которые делятся на каждую из своих цифр. Паскаль.
- Помогите с Pascal. Дано натуральное число. Определите сумму m его последних цифр отличных от 0
- Требуется написать программу, которая из цифр двух натуральных чисел создает наименьшее возможное число, сохраняя при эт
- Дано натуральное число п. Найти знакочередующуюся сумму цифр числа n:
- Дано натуральное А (максимум 1000 цифр) . Найти такое минимальное натуральное N, что N^N будет делиться на А без остатка.
- помогите решить задачи на паскале 1Во входном файле дана последовательность чисел. Требуется найти второе по величине чи
- Дано натуральное число n. Найти и вывести все числа в интервале от 1 до n -1, у которых произведение всех цифр совпадает
- 1. Получить сумму двух длинных натуральных чисел.
- Паскаль. Дано натуральное число. Верно ли , что цифра А встречается в нем более К раз.
- найти все семизначные числа, которые делятся на 15 и записываются только цифрами 0 и 1. Составить программу на паскале