помогите плз. задача - найти количество разбиений числа на слогаемые без генерации самих разбиений - формула.
заранее спс.
количество разбиений |
количество разбиений |
2ral |
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 22 Пол: Мужской Реальное имя: Neymanov Tural Репутация: 0 |
помогите плз. задача - найти количество разбиений числа на слогаемые без генерации самих разбиений - формула.
заранее спс. -------------------- Смейся и весь мир будет смеяться вместе с тобой, плачь и ты будешь плакать в одиночестве (Old Boy)
|
samec |
Сообщение
#2
|
Бывалый Группа: Пользователи Сообщений: 180 Пол: Мужской Реальное имя: Юра Репутация: 1 |
(пентагональная теорема Эйлера) Количество p(N) всевозможных разбиений числа N удовлетворяет тождеству
p(N)=p(N-1)+p(N-2)-p(N-5)-p(N-7)+p(N-12)+p(N-15)-... |
Lapp |
Сообщение
#3
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
p(N)=p(N-1)+p(N-2)-p(N-5)-p(N-7)+p(N-12)+p(N-15)-... Если эта формула верна (я не могу сейчас подтвердить, не помню), то нелишне привести способ вычисления вычитаемых в скобках - он совершенно неочевиден. Вот он: Di = (3*i^2 + i)/ 2 , где i = 0, -1, 1, -2, 2, -3, 3, .. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Lapp |
Сообщение
#4
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Что-то не вяжется с этой формулой.. Произведем разложение числа 2:
Реально: (1,1), (2) - то есть 2 разложения. По этой формуле: P(2) = P(1) (остальные слагаемые имют аргумент >=0), а P(1)=1 Явное расхождение. Ммм?.. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
2ral |
Сообщение
#5
|
Новичок Группа: Пользователи Сообщений: 22 Пол: Мужской Реальное имя: Neymanov Tural Репутация: 0 |
Что-то не вяжется с этой формулой.. Произведем разложение числа 2: Реально: (1,1), (2) - то есть 2 разложения. По этой формуле: P(2) = P(1) (остальные слагаемые имют аргумент >=0), а P(1)=1 Явное расхождение. Ммм?.. а мне кажется верно - просто P(0)=1 так как имеется одно разложение. я токо одно не понял - откуда берутся 1 2 5 7 12..... а так спасибо. жду ответа. Сообщение отредактировано: 2ral - -------------------- Смейся и весь мир будет смеяться вместе с тобой, плачь и ты будешь плакать в одиночестве (Old Boy)
|
Lapp |
Сообщение
#6
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
а мне кажется верно - просто P(0)=1 так как имеется одно разложение. Нет, ноль не входит в разложения. Для убедительности - вот еще разложение для 4.по формуле: p(4) = p(3)+p(2) = (p(2)+p(1)) + p(1) = p(2)+2p(1) = p(1)+2p(1) = 3 реально: (1,1,1,1) (2,1,1) (2,2) (3,1) (4) - всего 5. Если добавишь еще и нули, получишь дополнительно: (1,1,1,1,0) (2,1,1,0) (2,2,0) (3,1,0) (4,0) - еще 5, всего 10. Можешь сам продолжить проверку на других числах. я токо одно не понял - откуда берутся 1 2 5 7 12..... Ну я же написал формулу..а так спасибо. Да пока не за что..-------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
samec |
Сообщение
#7
|
Бывалый Группа: Пользователи Сообщений: 180 Пол: Мужской Реальное имя: Юра Репутация: 1 |
а по-моему всё сходится
P(1)=1 - это ведь точно? А получили мы это по вышеприведенной формуле вот как: P(1), n=1, по формуле: P(1)=P(1-1)=P(0)=1. P(2), n=2, по формуле: P(2)=P(2-1)+P(2-2)=P(1)+P(0)=P(0)+P(0)=2P(0)=2. P(3), n=3, P(3)=P(2)+P(1)=2P(0)+P(0)=3P(0)=3. P(4),n=4, P(4)=P(3)+P(2)=3P(0)+2P(0)=5P(0)=5. P(5),n=5, P(5)=P(4)+P(3)-P(0) = 5P(0)+3P(0)-P(0) = 7P(0)=7. P(6),n=6, P(6)= P(5)+P(4)-P(1) = 7P(0)+5P(0)-P(0)=11P(0)=11. P(7),n=7, P(7)=P(6)+P(5)-P(2)-P(0)=11P(0)+7P(0)-2P(0)-P(0) = 15P(0)=15. ну и так и далее p(8) = 22 p(9) = 30 p(10) = 42 p(100) = 190 569 292 p(1000) = 24 061 467 864 032 622 473 692 149 727 991 Сообщение отредактировано: samec - |
Гость |
Сообщение
#8
|
Гость |
Нет, ноль не входит в разложения. Для убедительности - вот еще разложение для 4. по формуле: p(4) = p(3)+p(2) = (p(2)+p(1)) + p(1) = p(2)+2p(1) = p(1)+2p(1) = 3 реально: (1,1,1,1) (2,1,1) (2,2) (3,1) (4) - всего 5. Если добавишь еще и нули, получишь дополнительно: (1,1,1,1,0) (2,1,1,0) (2,2,0) (3,1,0) (4,0) - еще 5, всего 10. Можешь сам продолжить проверку на других числах. Ну я же написал формулу.. Да пока не за что.. да нет все правилно просто ты сного не учитываешь p(0). вот настоящее разложние: p(4)=p(3)+p(2)=(p(2)+p(1))+(p(1)+p(0))=(((p(1)+p(0))+p(1))+(p(1)+p(0))=5*(p(0))= 5 спасибо за все. |
2ral |
Сообщение
#9
|
Новичок Группа: Пользователи Сообщений: 22 Пол: Мужской Реальное имя: Neymanov Tural Репутация: 0 |
Блин забыл войти но это мой пост, сорри
-------------------- Смейся и весь мир будет смеяться вместе с тобой, плачь и ты будешь плакать в одиночестве (Old Boy)
|
Lapp |
Сообщение
#10
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Хорошо, убедили .
Я для себя нашел тоже способ примириться с этим. На самом деле ноль есть в каждом разложении: (1,1,1,1,0) (2,1,1,0) (2,2,0) (3,1,0) (4,0) И этот ноль - он "неубираемый" . Тогда все встает на свои места samec, +1 -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Текстовая версия | 22.12.2024 8:57 |