Задача о счастливых билетах

Материал из Викиконспекты
Перейти к: навигация, поиск

Троллейбусный (трамвайный) билет имеет номер, состоящий из шести цифр. Билет считается счастливым, если сумма первых трёх цифр равна сумме последних трёх, например, 024321. Известно, что количество счастливых билетов из шести цифр равно 55252.

Задача:
Для натурального n найти количество 2n-значных счастливых билетов Ln.

Решение с помощью динамического программирования

Обозначим количество n-значных чисел с суммой k как Dkn (число может содержать ведущие нули). 2n-значный счастливый билет состоит из двух частей: левой (n цифр) и правой (тоже n цифр), причём в обеих частях сумма цифр одинакова. Количество счастливых билетов с суммой k в одной из частей равно (Dkn)2. Значит общее число билетов равно Ln=9nk=0(Dkn)2. Также можно сопоставить счастливому билету a1a2anb1b2bn 2n-значное число с суммой 9n: a1a2an(9b1)(9b2)(9bn), причем это соответствие взаимно-однозначно, поэтому Ln=D9n2n. Осталось научиться вычислять Dkn. Положим Dk0={1,k=00,k>0. При n>0 количество n-значных чисел с суммой цифр k можно выразить через количество (n1)-значных чисел, добавляя к ним n-ю цифру, которая может быть равна 0,1,,9: Dkn=kj=0Dkjn1.

Решение с помощью производящей функции

Выпишем производящую функцию G(z), коэффициент при zk у которой будет равен Dk1: G(z)=1+z+z2+z3+z4+z5+z6+z7+z8+z9. Действительно, однозначное число с суммой цифр k (для k=0,,9) можно представить одним способом. Для k>9 — ноль способов. Заметим, что Gn(z) — производящая функция для чисел Dkn, поскольку коэффициент при zk получается перебором всех возможных комбинаций из n цифр, равных в сумме k. Ответом на задачу будет [z9n]G2n(z). Перепишем производящую функцию в ином виде: G(z)=1+z++z9=1z101z и получим, что G2n(z)=(1z10)2n(1z)2n=2nk=0(2nk)(z10)kj=0(2nj)(z)k. Так как (2nk)=(1)k(2n+k1k), [z9n]G2n(z)=9n/10j=0(1)j(2nj)(11n10j19n10j), что при n=3 дает (60)(3227)(61)(2217)+(62)(127)=55252.

Источники информации

[1]

См. также

Производящая функция

Динамическое программирование