Комбинаторика, програмирование, счастливые автобусные билеты
В некотором городе действует n-теричная система счисления. Автобусный билет состоит из 2k чисел и считается счастливым если сумма первых k разрядов равна сумме последних. 2 < n
В некотором городе действует n-теричная система счисления. Автобусный билет состоит из 2k чисел и считается счастливым если сумма первых k разрядов равна сумме последних. 2 < n
Что первое напрашивается это перебрать все возможные комбинации билетов и проверить каждый, в данном случае можно вложенные циклы, первый перебирает систему счисления, вложенный перебирает сами цифры, внутри циклов проверка для начала четности разряда, затем можно конвертировать переменную в текст, потом конвертируя отдельные разряды, получить сумму обоих частей числа. сделать проверку равенства сумм, если сходится - добавить к счетчику счастливых билетов единицу.
Потом приходит в голову еще один способ по моему самый оптимальный:
создаем массив. далее сканируем только одну половину билета, всмысле перебираем. функция внутри цикла должна быть такая: суммируем числа по правилам системы счисления, получаем некоторое число, переводим его в десятичную СС, и затем увеличиваем в созданном массиве элемент с индексом равным числу, которое мы перевели в десятичную СС увеличиваем на единицу. В итоге мы получим сколько каждая сумма встречается среди половинок билета. Теперь мы суммируем квадраты чисел этого массива, и в итоге получим количество счастливых билетов.
Разъясню:
К примеру возьмем билет n=2 k=2; получим массив 1,2,3,4,5,6,7,8,9,10,9,8,7,6,5,4,3,2,1
Ох ты)) ) интересно получилось))) )
первый элемент содержит единицу, это количество вариантов, чтобы в сумме получить 0, есть только 1 вариант 00, и все. Ну и так далее. Теперь нам надо сложить квадраты количества сумм, т. е. 1+4+9+...+4+1 и получим количество счастливых билетов от 0000 до 9999. Квадраты по тому, что: возьмем суммы при которых получается 2, их всего 3: 02,11,20. Больше вариантов нет. Билеты для правой части с 02, может быть так же 3 варианта, и так для каждого из вариантов. т. е. квадрат числа.
Смотря на ряд количества сумм, я думаю можно найти закономерность, чтобы не просчитывать все билеты, но пока чтот не могу сообразить.. .
В общем чем мог, тем помог.
а что собственно найти надо?
тратата, количество билетов видимо. Мы решали такие задачи, но я не вижу тут вопроса. И что значит "не решение, но на питоне"? 0_о