Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Математика _ задача на головоломку

Автор: maksimla 2.12.2008 20:12

дано 48 монет среди них 1 монета фальшивая , но мы не знаем фальшивая монета больше или меньше весит. Надо за 4 взвешивания найти фальшивую монету. Весы для взвешивания чайные. много щитал только за 5 взвешиваний у меня выходит фальшивую монету найти. помогите

Автор: S!n 2.12.2008 20:16

Это что, надо в Паскале реализовать?

Автор: maksimla 2.12.2008 20:43

нет не в паскале просто вычеслить и все математический

Автор: S!n 2.12.2008 20:52

А сколько монет можно взвешивать за один раз?

Автор: Lapp 2.12.2008 21:02

Цитата(maksimla @ 2.12.2008 16:43) *
нет не в паскале просто вычеслить и все математический
Если так - почему в разделе Паскаль?
М
Переношу в Математику.


Автор: maksimla 2.12.2008 21:05

а что форум математики есть?
но эта задача както свезона с информатикой.

сколько хочешь но чтобы после 4 взвешиваний нашол 1 монету фальшиваю

Автор: volvo 2.12.2008 23:30

Цитата
эта задача както свезона с информатикой.
Естественно, эта задача имеет прямое отношение к теории информации...

Кстати, М. Гарднер утверждает, что за N взвешиваний можно найти одну фальшивую монету (и указать, легче она или тяжелее) из (3N-3)/2, или одну монету из (3N-1)/2, но без опознавания, легче она или тяжелее, просто указать на фальшивку... У тебя N=4, значит, можно найти фальшивку из (34-1)/2 монет в лучшем случае, а это (81-1)/2 = 40. У тебя же даны 48 монет. Задача нерешаема с этим условием.

Автор: maksimla 3.12.2008 14:21

ясно спасибо

Автор: S!n 3.12.2008 21:57

В теории все вполне ясно. А вот как на практике методом Гарднера можно найти фальшивую монету, пусть даже из 40 монет?

Автор: volvo 4.12.2008 0:09

Цитата
как на практике методом Гарднера можно найти фальшивую монету, пусть даже из 40 монет?
В "Компьютерре" в декабре 1997 года (если не ошибаюсь) был приведен подробный алгоритм. К сожалению, ссылку сейчас предоставить не могу, сайт у меня не открывается... Попробуй чуть позже зайти туда и посмотреть в архивах, возможно там есть этот материал. Если нет - напишу подробнее, как ищется фальшивая монета...

Автор: S!n 4.12.2008 0:13

Спасибо. Очень хочу посмотреть решение этой задачки. Вчера весь вечер над ней голову ломал )

Автор: stoker 11.05.2009 21:17

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.