Показать сообщение отдельно
  #8 (permalink)  
Старый 12.05.2019, 17:40
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

Сообщение от рони
может быстрее подсчитать количество комбинаций нужной суммы исходя из количества мест нечётных и умножить на комбинацию чётных чисел?
Это само собой. Для начала можно решить задачу "влоб", работая только с нечетными разрядами (предполагаем, что самый младший разряд - первый, т.е. нечетный):
Например, при М = 5
ХХХХХ считаем только красные (нечетные), проходя циклом от 100 до 999, потом домножаем на 10*10 вариантов черных (четных)

при М = 6 (ХХХХХХ) красные будут от 000 до 999, домножаем на 9*10*10

Итого:
цикл for (var i = A; i <= B; ++i)
A = M%2 ? Math.pow(10, Math.ceil(M / 2) - 1) : 0
B = Math.pow(10, Math.ceil(M / 2)) - 1
вариантов черных: C = M%2 ? Math.pow(10, Math.floor(M / 2)) : 9 * Math.pow(10, M / 2 - 1)


Далее цикл поменять на более эффективный перебор сумм, позже напишу если время будет

Последний раз редактировалось Alexandroppolus, 12.05.2019 в 17:45.
Ответить с цитированием