![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Merhaba |
![]()
Сообщение
#1
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 57 Пол: Мужской Репутация: ![]() ![]() ![]() |
Помогите Пожалуйста решить задачу:
Ограничение времени: 3.0 секунды Ограничение памяти: 64 МБ Белочехи решили прекратить ожесточённые бои в Сибири и вернуться домой. Но покинуть Россию было непросто — чтобы добраться на кораблях из Владивостока в Европу, были нужны деньги. Белочехи решили раздобыть необходимую сумму, продав свои винтовки наступающим войскам красных. Всего на продажу они выставили n винтовок. Первые две винтовки были самыми обычными, и белочехи просили за каждую из них только один рубль. Зато i-я винтовка (i ≥ 3) стоила столько же, сколько (i−1)-я и (i−2)-я вместе взятые. В стране имеют хождение только банкноты с номиналами, равными степеням числа k (банкноты в один рубль, k рублей, k2 рублей и т. д.) В распоряжении большевиков уже достаточно типографий, поэтому напечатать нужное количество денег не составило труда. Они заплатили за каждую винтовку минимально возможное количество банкнот, в сумме дающее ровно столько, сколько просили за эту винтовку белочехи. Когда винтовки попали в руки красных, Чапаев попросил Анку упорядочить их по возрастанию количества банкнот, которое было за них заплачено. Если за две винтовки было заплачено одинаковое количество банкнот, то раньше должна идти винтовка с меньшим номером. Помогите Анке выполнить просьбу Чапаева. Исходные данные В единственной строке через пробел записаны целые числа k и n (2 ≤ k ≤ 10; 3 ≤ n ≤ 50000). Результат Выведите перестановку чисел от 1 до n — номера винтовок, упорядоченные по возрастанию количества уплаченных за них банкнот. Пример исходные данные 10 8 результат 1 2 3 4 8 7 5 6 Подсказка Когда Анка выполнит просьбу Чапаева, стоимости винтовок в рублях будут выглядеть так: {1, 1, 2, 3, 21, 13, 5, 8}. Мне кажется, что нужно написать процедуры: в первой считаем сколько денег стоит каждая винтовка. во второй считаем сколько банкнот нужно на покупку каждой винтовки в третьй просто сортируем. Добавлено через 12 мин. Стоимость винтовок образуют последовательность фиббоначчи. Мне кажется, чтобы все работало быстро нужно считать в длинных числах по основанию k ^ l <= 10^6. Чем больше l - тем быстрее будут операции с длинными числами, тем быстрее будет все работать. Помогите Пожалуйста оформить код! |
Merhaba |
![]()
Сообщение
#2
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 57 Пол: Мужской Репутация: ![]() ![]() ![]() |
Мне кажется, чтобы съэкономить время, нужна быстрая сортировка:
{ быстрая сортировка } procedure QuickSort(var item: DataArray; count:integer); |
![]() ![]() |
![]() |
Текстовая версия | 12.08.2025 3:55 |