Форум сайта python.su
Привет!
Помогите пожалуйста с задачей:
Одна известная ювелирная фирма планирует выбросить на рынок новую партию ожерелий. Каждое ожерелье состоит из n камней, нанизанных на замкнутую нить, каждый камень может быть одного из k различных цветов. Но поскольку ни одна женщина в мире не захочет, чтобы у какой-нибудь другой женщины было такое же ожерелье, фирма планирует, что все выпущенные ожерелья будут различными. Камни можно свободно двигать по нитке, также ожерелье можно переворачивать. Помогите фирме определить, сколько ожерелий она сможет выпустить.
Формат входных данных
На вход программа получает два числа: количество камней на нитке n и количество допустимых цветов k. Оба числа натуральные. Кроме того, в силу особенностей технологического процесса производства ожерелий произведение nk не превосходит 32.
Формат выходных данных
Программа должна вывести единственное число: количество различных ожерелий из n камней k цветов.
Пример
Входные данные
1
1
Выходные данные
1
Входные данные
5
2
Выходные данные
8
Отредактировано EchoXSpace (Янв. 19, 2013 18:24:13)
Офлайн
“ также ожерелье можно переворачивать.”
Что это значит?
А если например “красный камень”,“зеленый”,“желтый” и “желтый”,“зеленый”,“красный” это одно и тоже ожерелье?
Отредактировано Singularity (Янв. 19, 2013 19:04:39)
Офлайн
aabb = bbaa
Полагаю, что считать за одно ожерелье.
Отредактировано EchoXSpace (Янв. 19, 2013 19:06:12)
Офлайн
Да, это одно и тоже ожерелье.
Отредактировано EchoXSpace (Янв. 19, 2013 19:08:28)
Офлайн
EchoXSpaceэто правильно? Если да то какие ожерелья выпустили? Не очень понятное условие что-то
Входные данные
5
2
Выходные данные
8:
Офлайн
Да я сам незнаю, если честно
У меня получалось 6.
Может быть, написан неправильный пример?
Отредактировано EchoXSpace (Янв. 19, 2013 19:14:42)
Офлайн
правильно скорей всего. Я таки понял условие, но что-то там слишком много всего в голове держать надо Надо на свежую голову ее
Офлайн
Мне кажется надо количество**цвета и вычитать количество перевороты о которых я спрашивал.
Если брать символы все просто, а вот придумать формулу чтобы без лишних вычислений не могу
Офлайн
У меня сходится вроде
def func(number, colour): if number*colour>32: print "Error!" return 0 import string from itertools import product s_colour = string.ascii_lowercase[:colour] def produc_recursive(n): if n == 1 : return s_colour l = [] for f,s in product(produc_recursive(n-1),s_colour): l.append(f+s) return l all_product = produc_recursive(number) print all_product return len([ True for d in [x[::1] for x in all_product] if d in all_product]) print func(5,2)
Отредактировано Singularity (Янв. 19, 2013 20:49:00)
Офлайн
Камни можно свободно двигать по нитке, также ожерелье можно переворачивать.
# Exercise № 2 "Necklace" # Import lib import math # Function declaration def calc(k, n): result = (math.factorial(k + n - 1)) / (math.factorial(k) * (math.factorial(n - 1))) return result # Input var's gems = int(input('Gem\'s count ')) color = int(input('Color\'s count ')) # Output print (int(calc(gems, color)))
Отредактировано EchoXSpace (Янв. 19, 2013 21:16:47)
Офлайн