Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Задача про математика Иосифа Флавия.

18K
07 ноября 2006 года
JohnZP
10 / / 27.10.2006
Pascal.
Сущ-т легенда что Иосиф Флавий выжил и стал известным благодоря математической одаренности. В ходе Иудейской войны он в составе отряда из 41 иудейского воина был загнан римлянами в пещеру. Предпочитая самоубийство в плену, воины решили выстроится в круг и последовательно убивать каждого 3го из живых до тех пор пока е останется ни одного человека. Однако Иосиф на ряду с 1 из единомышленников счел подобный конец бессмысленным - он быстро вычеслил места в круге на которые себя и товарища. И лишь поэтому остался жив.
Исключать k-го, пока не останется 1 человек. Определить номер уцелевшего.
Огромное спасибо!!!
Извините что не в тот раздел влез, понял когда написал.
547
08 ноября 2006 года
Hydra
488 / / 20.06.2006
Если не думая, то алгоритм такой:
1. Создаем массив из N чисел.
2. Заполняем a=1
3. Пока в массиве больше 2х единиц
4. Ищем единицу - пропускаем (2 раза)
5. Ищем единицу - заменяем на 0
6.3K
08 ноября 2006 года
Neutral
76 / / 13.12.2005
Это на самом деле так называемая "считалка Джозефуса". Можешь поискать в Интернете, насколько я помню там даже выводяться какие то формулы, позволяюцие посчитать этого человека, но не уверен. А вобще самое простое решение - замкнутый(кольцевой) список, то есть фактически то что предложил Hydra.
9.4K
15 ноября 2006 года
demonddt
10 / / 28.04.2005
Код:
program schitalochka;
uses crt;
type point=^list;
list = record
data:integer;
next:point;
end;
var a,head:point;
t,n,k:integer;
 
procedure createlist(n:integer);
var i:integer;
begin
for i:=n downto 1 do
begin
new(a);
a^.data:=i;
a^.next:=head;
head:=a;
end;
while a^.next<>nil do a:=a^.next;
 
a^.next:=head;
head:=a^.next;
end;
 
procedure delete_el(k:integer);
var buf:point;
i:integer;
begin
while a^.data<>a^.next^.data do
begin
for i:=1 to k-2 do a:=a^.next;
buf:=a^.next;
{write(buf^.data:3);}
a^.next:=buf^.next;
dispose(buf);
a:=a^.next;
end;
end;
 
begin
clrscr;
createlist(5);
a:=head;
{while a<>nil do
begin
write(a^.data:3);
a:=a^.next;
inc(t);
if t=1000 then break;
end;
a:=head;}
writeln;
delete_el(2);
writeln;
writeln(a^.data);
readln;
end.
18K
16 ноября 2006 года
JohnZP
10 / / 27.10.2006
Большое спасибо!!!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог