Загадано число, заканчивающееся на цифру 2 Если переставить эту последнюю цифру (цифру 2) на первое место, то число удвоится Какое число загадано? Необходимо определить первые три минимальных таких числа, которые подходят под условия задачи.
Решать можно любыми способами: Excel, VBA, другие языки программирования, аналитически Поделитесь результатом и алгоритмом решения
PS: Решение есть, число не помещается в тип Long и невозможно оперировать типом Double, т.к. минимальное такое число содержит в себе 18 значащих цифр В Python задачу можно решить кодом менее чем в десять строк
Загадано число, заканчивающееся на цифру 2 Если переставить эту последнюю цифру (цифру 2) на первое место, то число удвоится Какое число загадано? Необходимо определить первые три минимальных таких числа, которые подходят под условия задачи.
Решать можно любыми способами: Excel, VBA, другие языки программирования, аналитически Поделитесь результатом и алгоритмом решения
PS: Решение есть, число не помещается в тип Long и невозможно оперировать типом Double, т.к. минимальное такое число содержит в себе 18 значащих цифр В Python задачу можно решить кодом менее чем в десять строк
Увидел, что ответ на задачу легко гуглится, поэтому нет необходимости ждать других участников. Но все же интересно, кто и как бы решал задачу, у меня есть два алгоритма поиска решения.
cmivadwot, как нашли решение, каким алгоритмом?
Увидел, что ответ на задачу легко гуглится, поэтому нет необходимости ждать других участников. Но все же интересно, кто и как бы решал задачу, у меня есть два алгоритма поиска решения.MCH
Sub main() Dim product As Long, digit As Long, carry As Long Dim result As String digit = 2 Do result = digit & result product = digit * 2 + carry digit = product Mod 10 carry = product \ 10 Loop Until digit = 2 And carry = 0 Debug.Print result Debug.Print result & result Debug.Print result & result & result End Sub
[/vba]
Мое решение на Python:
[vba]
Код
i = 0 m = 2 while i < 3: m *= 10 if (m - 4) % 19 == 0: print((m - 4) // 19 * 10 + 2) i += 1
Sub main() Dim product As Long, digit As Long, carry As Long Dim result As String digit = 2 Do result = digit & result product = digit * 2 + carry digit = product Mod 10 carry = product \ 10 Loop Until digit = 2 And carry = 0 Debug.Print result Debug.Print result & result Debug.Print result & result & result End Sub