Еще варианты
Изменено: - 28.12.2025 18:16:38
|
06.11.2025 17:42:58
Есть двоичная, восьмеричная, десятичная, шестнадцатеричная системы счисления (из общеупотребительных) и набор цифр в каждой системе разный Excel может работать до 36-ричной системы счисления, в качестве цифр используются знаки 0-9A-Z А еще есть римские числа, где числа записываются буквами и множество других Из контекста понятно что вместо "цифр" имеются в виду числа. И сама задача понятна - "подбор слагаемых под нужную сумму" или "задача о сумме подмножеств" По ссылке из предыдущего поста можно найти несколько вариантов решения данной задачи, наиболее быстрый - решение динамическим программированием, практически нет ограничения по количеству слагаемых, есть ограничения по целочисленности решения и по размеру искомой суммы. Сложность по времени: O(n * 10 ^ m), где n - количество слагаемых, m - количество значащих цифр Сложность по памяти: O(10 ^ m) Поиск суммы из 30 - 100 слагаемых в пределах до нескольких миллионов занимает секунды или доли секунды. Переборы это долго, но перебор 10 слагаемых из 35 проходит относительно быстро |
|||||
|
|
|
|
06.11.2025 17:26:30
Теоретически можно их все перебрать, но времени потребуется много варианты решения отсюда:
Изменено: - 06.11.2025 17:51:00
|
|||
|
|
|
|
07.10.2025 14:00:51
с привязкой к ячейке:
или
|
|||||||||||
|
|
|
|
17.07.2025 22:47:20
Реализовал на Python спираль 999 х 999: Решетом Эратосфена находим все простые числа в массиве от 0 до 999*999 Далее закручиваем числа в спираль - создаем матрицу со значениями True/False (Простое/Составное) И рисуем картинку на VBA пока лень переносить
Изменено: - 18.07.2025 07:41:12
|
|||
|
|
|
|
04.11.2024 22:54:15
Не знаю, актуальна ли еще задача или нет?
Для решения можно использовать линейное программирование, по исходному описанию 10A + 10Б рюкзаков по 5 отделений глубиной 50/60 см и шириной 10/15/20 см - не очень большая вариативность, можно перебрать все возможные комбинации, свести задачу к построению целочисленной линейной модели с правильным указанием целевой функции и решить задачу симплекс-методом. |
|
|
|
|
|
13.11.2023 15:16:57
Все целочисленные операции: +, -, *, // (целочисленное деление), ** (степень), % (остаток от деления) - производятся с длинными числами, не ограниченными по количеству знаков, ничего подключать не нужно. Обычно длинка работает достаточно быстро, т.к. реализована на C++, сравнивал с вычислениями на dotNet (в частности PascalABC.NET), Python большие числа Фибоначчи рассчитал значительно быстрее, чем BigInteger в PascalABC |
|||
|
|
|
|
13.11.2023 13:10:05
Решение на Python в пару строчек:
Результат:
Изменено: - 13.11.2023 13:11:12
|
|||||
|
|
|
|
15.08.2023 13:19:52
|
|||||||
|
|
|
|
29.06.2023 12:12:36
В зависимости от задач можно предложить:
1. Написать собственную UDF на VBA для расчета больших чисел 2. Использовать сторонние библиотеки, которые позволяют вычислять в Excel 3. Другой язык программирования с реализованной длинной арифметикой (Python, Java, C# и др.)
Изменено: - 29.06.2023 12:18:36
|
|
|
|
|
|
22.06.2023 08:22:19
|
|||
|
|
|
|
21.06.2023 16:27:10
Будут другие условия, формулу легко поправить. Формула должна корректно вычислять любой график работы в горизонте ближайших - 98 дней (можно исправить на нужный) И да, формула медленная и постоянна пересчитывается, что дает свои ограничения, по сравнению с математическими формулами.
Изменено: - 21.06.2023 16:36:19
|
|||
|
|
|
|
16.06.2023 12:01:28
Jack Famous, алгоритм зависит от задачи
Если слагаемых мало - даже перебор подойдет Если искомая сумма небольшая - динамическое программирование Если нет жесткого требования к оптимальности результата - жадный алгоритмы с частичными переборами с оптимизациями и отсечениями неперспективных ветвей решения используя эвристики Можно линейное программирование прикрутить Код Игоря считает быстро, когда решение точно есть, я пока не разобрался в алгоритме |
|
|
|
|
|
16.06.2023 11:00:20
Вижу перебор но с отсечением (как бы используем метод ветвей и границ), как только находим результат, останавливаем решение Возможно ошибаюсь Если поменять тип переменных с Variant на Long и Double, то можно еще немного ускорить Что заметил, если точного решения нет (если нельзя ровно разделить на два равных по сумме списка) то расчет уходит в долгую Например, первое число 999, второе число 1001 и далее 198 двоек Разделить данный список на два равных по сумме невозможно, можно в одном списке 999 + 99*2, в другом 1001 + 99 *2 (или 999 + 100*2 и 1001 + 98*2), что динамикой решается очень быстро
Изменено: - 16.06.2023 11:01:02
|
|||
|
|
|
|
16.06.2023 08:26:50
Ігор Гончаренко, Время работы впечатляет, поизучаю алгоритм
|
|
|
|
|