Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- uses
- System.SysUtils;
- type
- PPerson = ^TPerson;
- TPerson = record
- Number: Integer;
- Next: PPerson;
- end;
- function CreateCircle(N, K: Integer): string; stdcall;
- var
- head, curr, prev: PPerson;
- i: Integer;
- RemovedNumbers: string;
- begin
- // Создаем круг людей
- New(head);
- head.Number := 1;
- curr := head;
- for i := 2 to N do
- begin
- New(curr.Next);
- curr := curr.Next;
- curr.Number := i;
- end;
- curr.Next := head; // Замыкаем кольцо
- // Удаляем каждого K-го человека из кольца
- curr := head;
- RemovedNumbers := '';
- while curr.Next <> curr do
- begin
- // Находим K-го человека
- for i := 1 to K - 1 do
- begin
- prev := curr;
- curr := curr.Next;
- end;
- // Добавляем номер выбывшего человека в переменную типа string
- RemovedNumbers := RemovedNumbers + IntToStr(curr.Number) + ' ';
- // Удаляем выбывшего человека из кольца
- prev.Next := curr.Next;
- Dispose(curr);
- curr := prev.Next;
- end;
- // Остается последний человек в кольце
- Result := 'Выбывают: ' + RemovedNumbers + 'Остается: ' + IntToStr(curr.Number);
- // Освобождаем память
- Dispose(curr);
- end;
- exports
- CreateCircle;
- begin
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement