IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Винтовки белочехов
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 57
Пол: Мужской

Репутация: -  0  +


Помогите Пожалуйста решить задачу:
Ограничение времени: 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 - тем быстрее будут операции с длинными числами, тем быстрее будет все работать.
Помогите Пожалуйста оформить код!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 1)
сообщение
Сообщение #2


Пионер
**

Группа: Пользователи
Сообщений: 57
Пол: Мужской

Репутация: -  0  +


Мне кажется, чтобы съэкономить время, нужна быстрая сортировка:

{ быстрая сортировка }     procedure QuickSort(var item: DataArray; count:integer);      
procedure qs(l, r: integer; var it: DataArray);
var i, j: integer;
x, y: DataItem; begin
i:=l; j:=r;
x:=it[(l+r) div 2]; repeat
while it[i]<x do i := i+1;
while x<it[j] do j := j-1;
if y<=j then begin
y := it[i];
it[i] := it[j];
it[j] := y;
i := i+1; j := j-1;
end;
until i>j;
if l<j then qs(l, j, it);
if l<r then qs(i, r, it)
end;
begin
qs(1, count, item);
end; { конец быстрой сортировки }
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 20.05.2024 13:43
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name