|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
17.12.2011, 16:43 | #1 |
Новичок
Джуниор
Регистрация: 30.01.2010
Сообщений: 1
|
розсудите в решении
Петя Пяточкин старательно изучал программирование весь год, поэтому Святой Николай принес ему много конфет. Но у Петрика есть много друзей, которые плохо учились, а потому не получили конфет вообще. Не поверите, но этих друзей даже больше, чем конфет! Поскольку наш герой чрезвычайно добрый, то он решил отдать все конфеты друзьям, и не просто отдать, а разделить поровну.
Петя быстро сообразил, что на всех конфет ему не хватит. У парня достаточно странное понимание слова "поровну" - он решил, что нужно выбрать нескольких друзей, и разделить все конфеты между ними так, чтобы у каждого было одинаковое количество (это и есть"поровну" в понимании Пети). Как это сделать - вот главный вопрос. Проблема не только в том, чтобы выбрать друзей, которые немного меньше других безобразничали в этом году, поэтому должны получить конфеты, проблема еще и в том, чтобы подобрать нужное количество "хороших" друзей. Если друзей два десятка, а конфет всего четыре, то можно выбрать лишь одного друга, и отдать ему все конфеты. Можно выбрать двух друзей, и отдать им по 2 конфеты. Есть еще и третий способ - выбрать четырех, и каждому дать лишь одну конфету, потому что употреблять много сладостей вредно. Вот горе, трех друзей выбрать не выйдет, потому что как между ними не дели - или лишняя конфета останется, или кто-то получит многовато. Задание. Петя любит решать задачки, поэтому он попробовал написать программу, которая по заданному количеству конфет считает, сколько есть N чисел таких, что K конфет можно "поровну" разделить между N друзьями. Попробовать - попробовал. Ничего из этого не вышло. А у Вас - выйдет? Входные данные. В единственной строке записано натуральное число K - количество конфет, которые еще остались у Пети. Выходные данные. Единственное целое число – количество вариантов выбора числа "хороших" друзей. Ограничение. Пете известно, что конфет у него не больше 10^9 я так понял ну не знаю : Фишка в том что если K конфет можно распределить по N друзьям это значит что K делится нацело на N. Очевидно что это возможно для только для простых множителей числа и их комбинаций. Например для 12 это будет 2*2*3. Соответственно это варианты 1, 2, 3, 4, 6, 12. Получается что для заданного числа конфет K необходимо получить разложение этого числа на простые множители и затем каким-то образом составить из этих множителей все возможные комбинации делителей. Можно например перебирать все сочетания множителей и проверять, есть-ли уже такое число в неком списке, куда будут добавляться все возможные произведения. Причём сочетания необходимо брать по1, 2,3 и так далее до числа множителей. То есть если число представляется в виде произведения 5 чисел то брать сначала сочетания из 5 элементов по одному. Затем из 5 по 2, затем по 3 из 5 и так до 5 из 5. Это будут наборы всех возможных комбинаций множителей. Может кто то свои версии подкинет |
17.12.2011, 16:54 | #2 | |
Made In USSR!
Старожил
Регистрация: 01.09.2010
Сообщений: 3,657
|
Цитата:
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой" |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Нуждаюсь в решении. | vladter | Паскаль, Turbo Pascal, PascalABC.NET | 31 | 28.06.2011 16:15 |
Нужна помощ в решении | Torres123 | Помощь студентам | 2 | 10.02.2011 17:25 |
помощ в решении | Shaitan63 | Помощь студентам | 19 | 21.04.2010 10:40 |
возможно ли решении в Excel? | stbo | Microsoft Office Excel | 7 | 12.10.2008 19:16 |
Помогите в решении... | bacler | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 29.02.2008 23:23 |