program moneys;
var a,b:real;
c:integer;
begin
writeln('Задача: Дано "а" число монет, одна из них фальшивая '#10
'(фальшивая монета весит больше (меньше)) нужно узнать'#10
' за сколько взвешиваний "b" можно найти фальшивую монету,'#10
' или наоборот: найти кол-во монет, которое можно проверить'#10
' за "а" число взвешиваний'#10
' '#10
'Выберите тип задачи:'#10
'1 - Искать число монет.'#10
'2 - Искать число взвешиваний.'#10);
readln©;
case c of
1:begin
write(' Тип задачи: искать число монет.'#10
'----------------------------------'#10
'Введите число взвешиваний : ');read(b);
a:=(exp(b*ln(3))-1)/2;
writeln(' За ',b,' взвешиваний можно проверить ',a,' монет');
end;
2:begin
write(' Тип задачи: искать число взвешиваний .'#10
'----------------------------------'#10
'Введите число монет : ');read(a);
if a<>1 then
begin
b:=1;
while a*2+1>exp(b*ln(3)) do
begin
b:=b+1;
end;
writeln(a,' монет можно проверить за ',b,' взвешиваний. ');
end
else
writeln('Если имеется всего одна монета, то определить её подлинность нельзя.');
halt;
end;
else writeln(' Неправильно выбран тип задачи, нужно вводить 1 или 2');
end;
end.