Находчивый торговец

Одному торговцу редкими экзотическими фруктами необходимо посетить 30 рынков. У него имеется 3 мешка, в каждый из которых помещается не более 30 плодов. При посещении рынка в качестве торговой пошлины необходимо заплатить по одному плоду из каждого непустого мешка.
Если изначально у торговца было 90 плодов, то сколько их останется после посещения всех 30 рынков?

P.S. Можно перекладывать плоды из одного мешка в другой.

Ответ: Очевидно, что в интересах торговца опустошать мешки как можно скорее, чтобы не платить лишнюю пошлину. Посчитаем, через сколько рынков торговец сможет освободить первый мешок: нужно отдать 30 плодов, за каждое посещение он отдает по 3, т.е. через 10 рынков один из мешков останется пустым. Второй мешок опустеет через 30/2 = 15 посещений рынка. Посетив оставшиеся 5 рынков с одним мешком, наш торговец отдаст еще 5 плодов, а в мешке у него останется 90-30-30-5 = 25 плодов

Ваша оценка: Нет Средняя: 4 (43 оценки)


Комментарии

Он чё, не мог пришить края двух мешков друг к другу, чтобы из двух сделать один?
Не, ну не мог, так не мог, чё вы сразу...?

А я не понял, если он торговец, то чё он шляется по 30 рынкам с тремя мешками и нигде ничего не продаёт?

я тоже об этом.Просто он когда приходит на один из рынков ему говорят-"Иди ты на х.. со своими кабачками" и даже пошлину не берут,только затрещину выписывают.
Ответ: у продавца останется 90 плодов и полная жопа помидоров. Теперь все логично

Как то непонятно получается с условием и ответом.Обьясните почему так посещая кажый раз один из рынков он отдает один плод. Но в ответе уже посещая кажый раз рынок он одает 3 плода. Как так получается не пойму,обьясните пожалуйста.

Все логично и понятно.Нам даны 3 мешка по 30 плодов.Отдавать пошлину надо с непустых мешков,соответственно до 10 рынка пошлина идет с 3 мешков,тобиш 3 плода.После 10 рынка у нас получается-1 мешок-20,2-20,3-20.Из последнего перекладываем в два первых,и получается:1-30,2-30,3-0.Дальше проходим еще 15 рынков и перекладываем из 1 во 2,сответственно:1-30,2-0,3-0.Проходим еще 5 рынков,и отдаем по одному плоду за ход,так как с пустых мешков пошлина не взимается.Ответ:25!!!

А если он не будет перекладывать плоды, то у него ничего не останется. Как Вам этот ответ?

Можно перекладывать так что останется 49 плодов!
Первый раз идет на рынок с 3 мешками
29 29 29(-1)
Перекладываем из одного в два других
30 30 27(-2)
Идем второй раз
29 29 26(-1)
Опять перекладываем
30 30 24(-2)
Видим закономерность..-1 -2
23(-1)
21(-2)
20(-1)
18(-2)
17(-1)
15(-2)
14
13
11
10
8
7
5
4
2
30 30 1
Получается что на 20ый ход имеем 2 полных мешка и одно яблоко
Итак 20-ая пошлина
29 29 0
30 28
27
26
25
24
23
22
21
20
30 19

Итого 49 фруктов в двух мешках

0 логики, закономерность не верна, а даже если бы была верна, вы её нарушаете( 15,14,13) три раза подряд по -1

перекладывай не перекладывай с каждым рынком торговец теряет три плода,так что единственное правильное решение действительно как можно быстрее опустошить мешки

вернее первый мешок

перекладывание не считается за пошлину, потому вы прошли только 15 рынков

Закономерность повторяющихся чисел в данном случае никак 49 яблок не может быть. Давайте все досконально распишем:
поситили 1 рынок осталось 29+29+29;

2 28+28+28 осталось
3 27+27+27осталось
4 26+26+26осталось
5 25+25+25осталось
6 24+24+24
7 23+23+23
8 22+22+22
9 21+21+21
10 20+20+20
11 19+19+19
12 18+18+18
13 17+17+17
14 16+16+16
15 15+15+15 = 30+15 тут мы 3й мешок можем освободить
16 29+14
17 28+13
18 27+12
19 26+11
20 25+10
21 24+9
22 23+8 нельзя еще переложить
23 22+7 перекдадываем в один мешок остается 29
24 28
25 27
26 26
27 25
28 24
29 23
30 22

Для наглядности вот состряпал программу проверяющую эту задачку. Не пугайтесь господа,это синтаксис симейства С/С++/Java/C#

int b1=30; //мешок 1
int b2 =30; //мешок 2
int b3 = 30; //мешок 3
for(int i=0;i if((b1>15)&&(b2>15)&&(b3>15)){
b1--;
b2--;
b3--;
}
else if((b1==15) && (b2==15) && (b3==15)){
b1=b2+b3;
b1--;
b2--;
}
else if ((b1>22)&&(b2>7)){
b1--;
b2--;
}
else if((b1 b1=b1+b2;
b1--;
}
else if(b1 b1--;
}

}

мой вариант на php ))

$b1 = 30; //мешок 1
$b2 = 30; //мешок 2
$b3 = 30; //мешок 3

for($i=1;$i

if($b1 > 0){
if($b2 > 0){
if($b3 > 0){
$b3 -= 3;
} else {
$b2 -= 2;
}
} else {
$b1--;
}
}

}
echo 'b1 = '.$b1.'
';
echo 'b2 = '.$b2.'
';
echo 'b3 = '.$b3.'
';
?>

Бросайте программировать - не ваше это. Эта задача вообще не для алгоритмов.

Это не совсем верный вариант. Торговцу необходимо сохранить как можно больше фруктов. Оптимальный вариант изложен в решении. Если его расписать более детально, то он выглядит таким образом:
№ Р1 Р2 Р3 Всего
1 29 29 29 87
2 28 28 28 84
3 27 27 27 81
4 26 26 26 78
5 25 25 25 75
6 24 24 24 72
7 23 23 23 69
8 22 22 22 66
9 21 21 21 63
10 30 30 0 60
11 29 29 0 58
12 28 28 0 56
13 27 27 0 54
14 26 26 0 52
15 25 25 0 50
16 24 24 0 48
17 23 23 0 46
18 22 22 0 44
19 21 21 0 42
20 20 20 0 40
21 19 19 0 38
22 18 18 0 36
23 17 17 0 34
24 16 16 0 32
25 30 0 0 30
26 29 0 0 29
27 28 0 0 28
28 27 0 0 27
29 26 0 0 26
30 25 0 0 25

Самый правильный расклад,без сомнения.

Спасибо. Я просто решил более подробно расписать изложенное решение.

Милый друг 90-(20?3)=30 что уже меньше сорока....

Хорош "находчивый торговец" - 65 фруктов почём зря отдать;))

Я вообще не пойму, что он с тремя мешками носится бо базарам. Взял один и отдал за него 1 плод,тогда 60 останется. А на другие плоды можно просто прайс показывать:)

да ничего у него не останется
первую пошлину отдаст 3 фрукта
остальное продаст
потом пойдет по рынкам с пустыми мешками)))
вы бы стали таскать за собой три мешка фруктов по 30 рынкам)

Интересно, позвольте обратиться к автору сайта. Вы не могли бы исправить условие задачи, где сказано что он должен платить пошлину.
Дело в том, что тамошние строки можно понимать по разному: в условии написано, что торговец должен платить из КАЖДОГО НЕПУСТОГО МЕШКА!!!!
Ну а в решении же вы поступаете ровно наоборот: Вы платите 3 ПЛОДА ИЗ 1 МЕШКА!!!
А так задача хорошая

Просто в решении "опущен" момент с перекладыванием фруктов. Подразумевается, что после посещения 10 рынков, когда осталось по 20 плодов в каждом мешке, необходимо переложить по 10 плодов из третьего мешка в первые два. Значит, один мешок станет пустым, то есть с него уже пошлина не взимается. Аналогичные действия производятся после посещения 25 рынков.

Задачу можно упростить. Перекладывание физически необходимо, но математически сбивает с толку.
Алгоритм (прежде всего для программистов) может быть гораздо проще:

До тех пор пока плодов > 60 вычитаем по 3
До тех пор пока плодов > 30 вычитаем по 2
Далее вычитаем по 1
Выход из цикла по условию достижения количеста итераций == 30
Остаток: 25 плодов

Еще проще если абстрагироваться от конкретных цифр

Для "X" мешков, "Y" плодов в мешке и "Z" рынков
От общего количества плодов X*Y вычитаем X за каждую итерацию (посещение рынка)
одновременно ведём учет отданных плодов и каждые Y плодов уменьшаем X на 1 (можно использовать операцию деления по модулю: общее кол-во отданных плодов % Y == 0).
Выход из цикла при общем количестве итерации == Z