Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Почему не выводит ответ?

faceit com Ученик (184), открыт 1 месяц назад
Определите количество восьмизначных
16ричных чисел, в записи которых ровно два нуля и не более четырёх цифр, для записи которых используются буквы.
s="0123456789ABCDEF"
k=0
for c1 in s[1:]:
for c2 in s:
for c3 in s:
for c4 in s:
for c5 in s:
for c6 in s:
for c7 in s:
for c8 in s:
p=c1+c2+c3+c4+c5+c6+c7+c8
q=p.count("A")+p.count("B")+p.count("C")+p.count("D")+p.count("E")+p.count("F")
if p.count("0")==2 and q<=4:
k+=1
print(k)
2 ответа
Sergey V. Voronin Искусственный Интеллект (301144) 1 месяц назад
Жди. Тебе 4 миллиарда вариантов перебрать надо.
faceit comУченик (184) 1 месяц назад
а как на пайтоне быстрее сделать, чтоб сразу ответ вывелся
Sergey V. Voronin Искусственный Интеллект (301144) faceit com, не использовать питон :) Или считать не перебором, а придумывать другой алгоритм. Я принт перенёс в цикл, хоть увидел, что работает, и получил результат.
Андрей Высший разум (474962) 1 месяц назад
Потому, что эти задачи решаются БЕЗ написания кода. Простейшая комбинаторика.

Вариантов размещения 2 нулей:
C(2, 7) = 7! / (2! * (7 - 2)!) = 7 * 6 / 2 = 21, если числа без ведущего 0
C(2, 8) = 8! / (2! * (8 - 2)!) = 8 * 7 / 2 = 28, если ведущий 0 допустим.

После размещения нулей у нас осталось 6 незанятых позиций, на которых можно разместить 9 цифр (0 уже стоит) и 6 букв.
В числе 0 букв: 9⁶ вариантов.
В числе 1 буква: 6¹ * C(1, 6) * 9⁵ = 6 * 6 * 9⁵ вариантов.
В числе 2 буквы: 6² * C(2, 6) * 9⁴ = 6² * 15 * 9⁴ вариантов.
В числе 3 буквы: 6³ * C(3, 6) * 9³ = 6³ * 20 * 9³ вариантов.
В числе 4 буквы: 6⁴ * C(4, 6) * 9² = 6⁴ * 15 * 9² вариантов.

Ответ: 21 * (9⁶ + 6 * 6 * 9⁵ + 6² * 15 * 9⁴ + 6³ * 20 * 9³ + 6⁴ * 15 * 9²)
Если ведущий 0 допустим, 21 меняется на 28.
Похожие вопросы