dmitrij-sp7
?>

Допустим что вы — узник, которому вдруг предоставлено право выйти на свободу, но только в том случае, если справитесь с таким . перед вами две двери, одна из них ведет на волю, другая — дорога к смерти. сидят два стражника, причем один из них — лгун (всегда говорит неправду) или честный человек (всегда говорит правду), а второй — “хитрец”, то есть человек, который говорит правду и ложь строго поочерёдно (то есть либо на нечётные вопросы отвечает ложью, а на чётные — правдой, либо, наоборот, на нечётные вопросы говорит правду, а на чётные — лжет), но вы не знаете, кто из них кто. оба стражника знают, какая из дверей ведет на волю. вы имеете право задать два вопроса одному из них. как вам определить дверь, ведущую на свободу?

Информатика

Ответы

dmitrij-sp7
1. Твой напарник – хитрец?
Если он ответит да, то он либо правдец, либо хитрец в режиме лжеца, следовательно на следующий вопрос он ответит правду. Если он ответит нет, то он либо лжец, либо хитрец в режиме правдеца, следовательно на следующий вопрос он ответит неправду.
2. Какая дверь ведет на свободу?
Если первый ответ был да, то идем туда, если нет – то в другую.
abakas235
1. Современный вариант (коротко, быстро и наглядно, кто знает). Так уже начали учить в некоторых школах.

// PascalABC.NET 3.2, сборка 1417 от 28.03.2017
// Внимание! Если программа не работает, обновите версию!

begin
  var s:=ArrRandom(ReadInteger('n='),1,300).Println.
      Where(k->(k>=100) and ((k mod 100) div 10=0));
  if s.Count>0 then Writeln(s.Max) else Writeln('Нет элементов')
end.

Пример
n= 15
76 283 171 140 113 65 185 35 202 42 93 51 205 76 138
205

2. А так по-прежнему учат в большинстве школ. Стиль "80-х годов века". Долго, длинно, можно наделать ошибок, но по-другому эти учителя сами не могут.

const
  nn=100;
var
  i,n,max:integer;
  a:array[1..nn] of integer;
begin
  Write('n=');
  Read(n);
  Randomize;
  max:=0;
  for i:=1 to n do begin
    a[i]:=Random(300)+1;
    Write(a[i],' ');
    if (a[i]>=100) and ((a[i] mod 100) div 10=0) then
      if a[i]>max then max:=a[i]
    end;
  Writeln;
  if max>0 then Writeln(max)
  else Writeln('Нет элементов')
end.

Пример
n=15
219 68 131 115 104 169 80 288 143 108 124 214 50 101 1
108
avn23
1) Набираем 8ми литровый кувшин
2) отливаем 3 литра в 3х литровый и сливаем из него воду
3) в 8ми литровом осталось 5л воды, сливаем снова в 3х литровый, и в 8ми литровом осталось 2 литра воды.
4) выливаем из 3х литрового воду, и переливаем в него 2 литра, оставшиеся в 8литровом кувшине.
5)Снова наполняем 8ми литровый кувшин, и доливаем из него воду в 3х литровый кувшин, так как в 3х литровом налито 2 литра - там не хватает одного литра, значит отлив из 8ми литрового литр в нем останется 7 литров :)

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Допустим что вы — узник, которому вдруг предоставлено право выйти на свободу, но только в том случае, если справитесь с таким . перед вами две двери, одна из них ведет на волю, другая — дорога к смерти. сидят два стражника, причем один из них — лгун (всегда говорит неправду) или честный человек (всегда говорит правду), а второй — “хитрец”, то есть человек, который говорит правду и ложь строго поочерёдно (то есть либо на нечётные вопросы отвечает ложью, а на чётные — правдой, либо, наоборот, на нечётные вопросы говорит правду, а на чётные — лжет), но вы не знаете, кто из них кто. оба стражника знают, какая из дверей ведет на волю. вы имеете право задать два вопроса одному из них. как вам определить дверь, ведущую на свободу?
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

olgolegovnak
dokmak140652
yurassolo747
elenaowchinik4842
Остап-Лаврова1410
dailyan539
Карен
alexeytikhonov
lsyrbu
VSpivak3122
naratnikova
ВайсманКреденс357
stsnab
gavrilasmax05
Dmitrii1763