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

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

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

> Казнь, Это название задачи такое
EXE
сообщение 17.12.2004 0:55
Сообщение #1


Новичок
*

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

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


Задача
На площадь выводят N человек, приговоренных к смерти, каждому из которым присвоен уникальный номер от 1 до N. Их расставляют по кругу по часовой стрелке по порядку. Казнь производится следующим образом: отсчитывают M человек, начиная с человека, стоящего после только что казненного, и этого M-го человека уводят на казнь. В начале казни отчет ведется от человека с номером 1. Узнать, человека с каким номером казнят K-м?

С клавиатуры вводятся числа: N, M, K

1<=N<=30000
1<=M<=30000
1<=K<=N


Я тут написал вроде, но не уверен. Посмотрите и подправьте если чего не так:
:low:
var
n, m, k, dop_per: integer;

begin
clrscr;
TextColor(white);
write('N: '); readln(n);
write('M: '); readln(m);
write('K: '); readln(k);
dop_per:=m*k;
repeat
if dop_per>n then begin
dop_per:=dop_per-n;
end;
until dop_per<=n;
write(dop_per);
readln;
end.


--------------------
Время есть сущность всех вещей.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 18.12.2004 17:55
Сообщение #2


Гость






EXE
Ясно, исходника у тебя никакого нет... Разбираться в приведенной программе будешь сам.
Код

Const
 n = 11;
 m = 7;
 k = 3;

Const
 liRange = SizeOf(LongInt) * 8;
Type
 TBigReg =
   Array[1 .. (n div liRange) + Byte((n mod liRange) > 0)] Of LongInt;

Procedure bit_info(bit: LongInt;
         Var block, offset: Byte);
 Begin
   block := Succ(Pred(bit) div 32);
   offset := Byte( ((bit mod 32) <> 0)) * 32 - (bit mod 32);
 end;

Function is_bit_set(Var x: TBigReg; bit: LongInt): Boolean;
 Var bBlck, bOffs: Byte;
 Begin
   bit_info(bit, bBlck, bOffs);
   is_bit_set := (((x[bBlck] shr bOffs) and $1) = $1);
 End;

Procedure xorBit(Var x: TBigReg; bit: LongInt);
 Var bBlck, bOffs: Byte;
 Begin
   bit_info(bit, bBlck, bOffs);
   x[bBlck] := x[bBlck] xor (LongInt($1) shl bOffs)
 End;

Procedure reset_bit(Var x: TBigReg; bit: LongInt);
 Begin
   If is_bit_set(x, bit) Then xorBit(x, bit)
 End;

Procedure set_bit(Var x: TBigReg; bit: LongInt);
 Begin
   If not is_bit_set(x, bit) Then xorBit(x, bit)
 End;

Function down_next(Var people: TBigReg;
        k, every: LongInt): LongInt;
 Var curr_bit, count, i: LongInt;

 Function next_bit(x: LongInt): LongInt;
   Begin
     Inc(x);
     If x > n Then x := 1;
     next_bit := x
   End;

 Begin
   curr_bit := 0;

   For i := 1 To k Do
     Begin
       count := 0;
       While count < every Do
         Begin
           curr_bit := next_bit(curr_bit);
           inc( count, Byte(is_bit_set(people, curr_bit)) )
         End;
       reset_bit(people, curr_bit)
     End;
   down_next := curr_bit;
 End;


Var
 all: TBigReg;
 i: integer;
begin
 For i := 1 To n Do
   set_bit(all, i);
 WriteLn('this was number: ', down_next(all, k, m))
end.
 К началу страницы 
+ Ответить 

Сообщений в этой теме
EXE   Казнь   17.12.2004 0:55
EXE   Ну, чего никто ничего не говорит? Жду. А то в поне...   18.12.2004 13:24
volvo   EXE Подождать еще пару часов можешь? Заканчиваю о...   18.12.2004 13:59
EXE   volvo черт, я не тот исходник выложил. Только щас...   18.12.2004 14:28
volvo   EXE :nono: Нет уж, выкладывай свою... А потом сра...   18.12.2004 14:35
volvo   EXE Ясно, исходника у тебя никакого нет... Разбир...   18.12.2004 17:55
EXE   Вообще-то я в форуме не круглосуточно сижу! ...   18.12.2004 21:42
K Y S K A   Я сейчас на первом курсе и мне тоже задали эту зад...   25.11.2005 13:53
klem4   :blink: :mega_chok: убераешь их из раздела CONS...   25.11.2005 17:04
K Y S K A   А т ы попробуй и увидишь, что он пишет!!...   25.11.2005 18:23
klem4   Да .. придется перекроить прогу или использовать к...   25.11.2005 18:27
volvo   K Y S K A, а ты скажи, что он тебе пишет, почему к...   25.11.2005 18:28
K Y S K A   " Cannot evalute this expresion" вот чт...   25.11.2005 18:44
volvo   K Y S K A, первые строки программы меняются вот та...   25.11.2005 18:50
klem4   хм Volvo... а как интересно компилятор пойемт вот ...   25.11.2005 18:51
virt   onst n_max = 11; m_max = 7; k_max = 3; Const ...   25.11.2005 18:52


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

 



- Текстовая версия 25.06.2025 6:38
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"