![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 04.10.2009
Сообщений: 38
|
![]()
Есть N одинаковых предметов и M пронумерованных ящиков.
Задача: Составьте программу BOXES, определяющую, сколько существует разных способов, которыми можно разместить все эти предметы в ящиках. Способы считаются разными, если они отличаются количеством предметов хотя бы в одном из ящиков. Ввод: В текстовом файле BOXES.IN находятся два целых числа M и N. (M >= 1, N >= 1, M + N <= 60). Вывод: В текстовый файл BOXES.OUT вывести целое число - количество различных способов размещения. Пример BOXES.IN ВВОД: 2 2 BOXES.OUT ВЫВОД: 3 заранее благодарен! ) Последний раз редактировалось Dionix; 30.06.2010 в 12:48. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
а мне задача не совсем понятна...
![]() а в одном ящике сколько может быть предметов? |
![]() |
![]() |
![]() |
#3 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
а мне не ясны габариты ящиков и предметов.
а вдруг ящик резиновый - тогда кол-во способов (n*m)! Если правильно помню лекции
I'm learning to live...
|
![]() |
![]() |
![]() |
#4 |
БохЪ
Форумчанин
Регистрация: 30.09.2009
Сообщений: 724
|
![]()
А мне кажется что задача не в том разделе!
В планах порабощение вселенной...
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 04.10.2009
Сообщений: 38
|
![]()
предметы в ящике могут быть разложны как угодно...
например два ящика и два предмета: 2 0 1 1 0 2 и в итоге получаем ответ 3 |
![]() |
![]() |
![]() |
#6 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
Dionix, а задачка действительно забавная... надо будет завтра подумать над алгоритмом. |
|
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 16.01.2010
Сообщений: 43
|
![]()
Для n<10 можно делать так: из исходных данных сделать число x:=n*10^m (10 в степени m) и дальше циклом for i:=1 to x do искать числа, сумма цифр которых будет равна n. Количество таких чисел будет ответом. Но возникнет проблема, когда число m будет больше 17.
Последний раз редактировалось Gumer; 01.07.2010 в 23:03. |
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 16.01.2010
Сообщений: 43
|
![]()
Решение еще нужно? У меня есть мысль о правильном коде программы, но мне нереально лениво его писать.
|
![]() |
![]() |
![]() |
#9 | ||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
Т.к. я решение вижу через цикл с рекурсией... НО!! у меня всё время крутиться в голове мысль, что можно вывести мат.формулу, которая для заданных N и M вернёт число вариантов без всяких переборов!! и ещё. Меня смущает вот эта часть условия: Цитата:
|
||
![]() |
![]() |
![]() |
#10 |
Пользователь
Регистрация: 16.01.2010
Сообщений: 43
|
![]() Код:
У нас есть числа m и n, из которых можно составить число x:=n*10^m (10 в степени m). Остается лишь от 1 до x найти все числа, сумма цифр которых будет равна n. Но при n>9 и/или m>18 (где-то так) возникает трудность составить такое число x, поэтому я сворганил массив и когда какая-то ячейка массива равна n, я сбрасываю ее обратно в начало (присваиваю значение 0) и повышаю следующую. Думаю, этот алгоритм правильный, но не очень эффективный при больших значениях m и n. Ввел 30 30 и прога повисла. Можно немного повысить эффективность, например, можно не продолжать увеличивать mas[1], если x=n. Последний раз редактировалось Gumer; 06.07.2010 в 16:38. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Turbo Pascal | Demenz | Помощь студентам | 3 | 27.05.2010 09:08 |
Turbo Pascal or Pascal ABC | Ikram | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 27.04.2010 13:44 |
Turbo Pascal | Ikram | Помощь студентам | 2 | 25.04.2010 10:26 |
а free pascal не читает задачи которые написаны на turbo pascal? | demonara | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 25.05.2009 16:28 |