27 13 6 3 1 ДЕЛИМ 27 на 2 , в частном берем без целое число (=13) 1 1 0 1 1 <=== 27(10) =11011(2) пишем в обратном порядке Делим 13 на 2, в частном берем целое без округления 6 Делим 6 на 2 (=3) и т.д.
1Делим монеты на две равные кучки. Из каждой кучки берем по 3 монеты, кладем на весы и взвешиваем. Если вес одинаковый то взвешиваем оставшиеся 1и 1 монеты и выявляем фальшивую (более легкую) . Если же одна группа из трех монет легче другой, значит там есть фальшивая монета. Оставляем более легкую группу из трех монет и кладем на весы 1и 1 и действуем по предыдущему алгоритму: если вес одинаков, значит фальшива третья, а если нет то та которая легче. 2да нужно заполнить полностью оба сосуда и оставить в каждом ровно половину получится как раз 4 литра (1,5+2,5 =4)
Procedure TForm1.Button4Click(Sender: TObject); var Buff: TNodePointer; x: TItem; i,j: Cardinal; begin i:=0; Buff:=Head; if(Buff^.Next=nil) then begin ShowMessage('В стеке один элемент!'); exit; end; while Buff <> nil do begin while (Buff^.Next<>nil) and (Buff^.Data=Buff^.Next^.Data) and not(isEmpty(Buff)) do begin pop(Buff^.Next,x); for j:=i to StringGrid1.RowCount-2 do StringGrid1.Cells[0,j]:=StringGrid1.Cells[0,j+1]; StringGrid1.RowCount:=StringGrid1.RowCount-1; end; Buff:=Buff^.Next; i:=i+1; end; end;
PS. Delphi у меня сейчас нет, так что проверяйте сами. Если что не так - сообщайте.
1 1 0 1 1 <=== 27(10) =11011(2) пишем в обратном порядке
Делим 13 на 2, в частном берем целое без округления 6
Делим 6 на 2 (=3) и т.д.
11 5 2 1
1 1 0 1 11(10) = 1011(2)
2001 1000 500 250 125 64 32 16 8 4 2 1
1 0 0 0 1 0 0 0 0 0 0 1
2001(10) =100000010001(2)