Помощь - Поиск - Пользователи - Календарь
Полная версия: задача на головоломку
Форум «Всё о Паскале» > Образование и наука > Математика
maksimla
дано 48 монет среди них 1 монета фальшивая , но мы не знаем фальшивая монета больше или меньше весит. Надо за 4 взвешивания найти фальшивую монету. Весы для взвешивания чайные. много щитал только за 5 взвешиваний у меня выходит фальшивую монету найти. помогите
S!n
Это что, надо в Паскале реализовать?
maksimla
нет не в паскале просто вычеслить и все математический
S!n
А сколько монет можно взвешивать за один раз?
Lapp
Цитата(maksimla @ 2.12.2008 16:43) *
нет не в паскале просто вычеслить и все математический
Если так - почему в разделе Паскаль?
М
Переношу в Математику.

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

сколько хочешь но чтобы после 4 взвешиваний нашол 1 монету фальшиваю
volvo
Цитата
эта задача както свезона с информатикой.
Естественно, эта задача имеет прямое отношение к теории информации...

Кстати, М. Гарднер утверждает, что за N взвешиваний можно найти одну фальшивую монету (и указать, легче она или тяжелее) из (3N-3)/2, или одну монету из (3N-1)/2, но без опознавания, легче она или тяжелее, просто указать на фальшивку... У тебя N=4, значит, можно найти фальшивку из (34-1)/2 монет в лучшем случае, а это (81-1)/2 = 40. У тебя же даны 48 монет. Задача нерешаема с этим условием.
maksimla
ясно спасибо
S!n
В теории все вполне ясно. А вот как на практике методом Гарднера можно найти фальшивую монету, пусть даже из 40 монет?
volvo
Цитата
как на практике методом Гарднера можно найти фальшивую монету, пусть даже из 40 монет?
В "Компьютерре" в декабре 1997 года (если не ошибаюсь) был приведен подробный алгоритм. К сожалению, ссылку сейчас предоставить не могу, сайт у меня не открывается... Попробуй чуть позже зайти туда и посмотреть в архивах, возможно там есть этот материал. Если нет - напишу подробнее, как ищется фальшивая монета...
S!n
Спасибо. Очень хочу посмотреть решение этой задачки. Вчера весь вечер над ней голову ломал )
stoker
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.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.