Python

Какой процент счастливых билетов в рулоне? Это когда сумма первых трёх цифр равна сумме последних трех

В рулоне билеты от 000000 до 999999. Какое колличество в рулоне счастливых билетов? Это когда сумма первых трёх цифр равна сумме последних трёх цифр. Я в 2001м в qbasic рассчитывал. Код был в шесть строчек.
 t = [0] * 28 
for i in range(1000): t[sum(map(int, str(i)))] += 1
print(sum(i ** 2 for i in t) / 10000, end='%\n')
 t = [sum(map(int, str(i))) for i in range(1000)]
print(sum(t.count(i) ** 2 for i in set(t)) / 10000, end='%\n')
Возьмём все 1000 вариантов первых 3 цифр билетов. Если сумма цифр 5 встречается среди этих 1000 вариантов 21 раз, то всего существует 21² = 441 6-значный счастливый билет с суммой 5. И так для всех возможных сумм от 0 до 27 включительно.

Ответ: 5.5252%

P.S. Кстати, да: кол-во билетов, сумма всех 6 цифр которых равна 27, в точности равно количеству счастливых билетов. Но это работает дольше:
 print(sum(sum(map(int, str(i))) == 27 for i in range(1000000)) / 10000) 
Desi Boy
Desi Boy
80 310
Лучший ответ
Андрей Соломонов Это верно для случая когда и в первой половине и во втором пятерки. Но если 003111 этот алгоритм не верен. ЗЫ 999999 счастливый.
Для решения этой задачи можно заметить, что сумма цифр в каждом билете равна 27 (0 + 1 + 2 + ... + 9 = 45, а 45 * 2 = 90, что дает сумму 27 для каждых трех цифр). Таким образом, для того чтобы билет был счастливым, нужно, чтобы сумма первых трех цифр была равна 13 (половина от 27) и одновременно с этим сумма последних трех цифр тоже была равна 13.

Чтобы найти количество счастливых билетов, можно использовать комбинаторику. Сумма трех цифр равна 13, а значит мы можем выбрать любые три цифры из множества {0, 1, 2, ..., 9} так, чтобы их сумма была равна 13. Это можно сделать с помощью сочетаний с повторениями. Формула для количества сочетаний с повторениями из n элементов по k элементов выглядит следующим образом:

C(n+k-1, k)

Таким образом, количество счастливых билетов равно:

C(9+3-1, 3) * C(9+3-1, 3) = 220 * 220 = 48400

Из всего количества билетов (1000000) процент счастливых билетов будет:

(48400 / 1000000) * 100% = 4.84%
Дмитрий ....
Дмитрий ....
2 159
Андрей Соломонов 999999 удовлетворяет условию. 9+9+9=27. Через нейросеть получили ответ? Я пробовал. Безтолку
 count = 0 
for i1 in range(10):
for i2 in range(10):
for i3 in range(10):
for i4 in range(10):
for i5 in range(10):
for i6 in range(10):
if i1+i2+i3 == i4+i5+i6:
count += 1

print(f'{count/1000000:%}')