Задача 1.Разделим монеты на 3 кучки по 9 монет. Положим на чаши весов первую и вторую кучки; по результату этого взвешивания мы точно узнаем, в какой из кучек находится фальшивка (если весы покажут равенство, то она - в третьей кучке). Теперь, аналогично, разделим выбранную кучку на три части по три монеты, положим на весы две из этих частей и определим, в какой из частей находится фальшивая монета. Наконец, остается из трех монет определить более тяжелую; кладем на чаши весов по 1 монете -фальшивкой является более тяжелая; если же на весах равенство, то фальшивой является третья монета из части.
Задача 2. 1). Наполняем (4), переливаем в (3), в (4) остался 1л. 2). Выливаем из (3), переливаем из (4) в (3), теперь в (3) 1л 3). Наполняем (4) и переливаем в (3) до заполнения. т.е. 2л. В (4) останется 4-2=2л.
Procedure GetAB(x: integer; var a: integer; var b: integer); begin a := 0; b := 1; while x > 0 do begin a := a + 1; b := b * (x mod 100); x := x div 100; end; end;
var x, a, b: integer;
begin for x := 10000 to 2000000000 do begin GetAB(x, a, b); if (a = 3) and (b = 18) then Println(a, b, x); end; end.