Нахождение наибольшей степени 10, которая равномерно делится на список чисел ⇐ Python
Нахождение наибольшей степени 10, которая равномерно делится на список чисел
Я пытаюсь уменьшить набор чисел для использования в алгоритме суммирования подмножеств DP. (Он взрывается, если числа слишком велики.) В частности, мне нужно найти наибольшую степень 10, которую я могу разделить на числа без потери точности. У меня есть рабочая процедура, но, поскольку она часто выполняется в цикле, я надеюсь, что есть более быстрый способ, чем метод грубой силы, который я придумал. Мои числа оказались десятичными.
из десятичного импорта Десятичный импорт математики def крупнейших_common_power_of_10(числа: список[десятичный]) -> int: """ Определите наибольшую степень 10 в списке чисел, которая будет делиться на все числа. без потери значащей цифры слева от десятичной точки """ мин_экспонента = число с плавающей запятой('inf') для числа в числах: если число != 0: # Подсчитаем количество конечных нулей в числе показатель степени = 0 в то время как число % 10 == 0: число //= 10 показатель степени += 1 мин_экспонента = мин(мин_экспонента, показатель) # Наибольшая степень 10 равна 10, возведенной в min_exdependent вернуть int (мин_экспонента) decimal_numbers = [Десятичный("1234"), Десятичный("5000"), Десятичный("200")] результат = наибольшая_общая_степень_10(десятичные_числа) утверждать (результат == 0) decimal_numbers = [Десятичный (470_363_000.0000), Десятичный (143_539_000.0000), Десятичный (1_200_000.0000)] результат = наибольшая_общая_степень_10(десятичные_числа) утверждать (результат == 3) делитель = 10**результат # Последующая обработка может использовать Scaled_list Scaled_list = [x/делитель x в десятичных_числах] Assert(scaled_list == [Decimal('470363'), Decimal('143539'), Decimal('1200')]) reconstituted_list = [x * делитель для x в масштабируемом_списке] утверждать (восстановленный_список == десятичные_числа)
Я пытаюсь уменьшить набор чисел для использования в алгоритме суммирования подмножеств DP. (Он взрывается, если числа слишком велики.) В частности, мне нужно найти наибольшую степень 10, которую я могу разделить на числа без потери точности. У меня есть рабочая процедура, но, поскольку она часто выполняется в цикле, я надеюсь, что есть более быстрый способ, чем метод грубой силы, который я придумал. Мои числа оказались десятичными.
из десятичного импорта Десятичный импорт математики def крупнейших_common_power_of_10(числа: список[десятичный]) -> int: """ Определите наибольшую степень 10 в списке чисел, которая будет делиться на все числа. без потери значащей цифры слева от десятичной точки """ мин_экспонента = число с плавающей запятой('inf') для числа в числах: если число != 0: # Подсчитаем количество конечных нулей в числе показатель степени = 0 в то время как число % 10 == 0: число //= 10 показатель степени += 1 мин_экспонента = мин(мин_экспонента, показатель) # Наибольшая степень 10 равна 10, возведенной в min_exdependent вернуть int (мин_экспонента) decimal_numbers = [Десятичный("1234"), Десятичный("5000"), Десятичный("200")] результат = наибольшая_общая_степень_10(десятичные_числа) утверждать (результат == 0) decimal_numbers = [Десятичный (470_363_000.0000), Десятичный (143_539_000.0000), Десятичный (1_200_000.0000)] результат = наибольшая_общая_степень_10(десятичные_числа) утверждать (результат == 3) делитель = 10**результат # Последующая обработка может использовать Scaled_list Scaled_list = [x/делитель x в десятичных_числах] Assert(scaled_list == [Decimal('470363'), Decimal('143539'), Decimal('1200')]) reconstituted_list = [x * делитель для x в масштабируемом_списке] утверждать (восстановленный_список == десятичные_числа)
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как лучше всего вернуть группу с наибольшей полосой отрицательных чисел в столбце?
Anonymous » » в форуме Python - 0 Ответы
- 15 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Возможна ли в Python лексикографическая сортировка с наибольшей длиной?
Anonymous » » в форуме Python - 0 Ответы
- 18 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Найдите ребенка с наибольшей ценностью продукта с помощью Java Stream API
Anonymous » » в форуме JAVA - 0 Ответы
- 19 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как получить метаданные, связанные с наибольшей пронумерованной временной меткой JSON?
Anonymous » » в форуме Php - 0 Ответы
- 7 Просмотры
-
Последнее сообщение Anonymous
-