Здравствуйте, adontz, Вы писали:
A>Может уже было. Я не нашёл. Внимание, мне нужно не просто решение, а красивое решение.
A>Пять матросов и мартышка потерпели кораблекрушение и высадились на необитаемом острове. Весь первый день они занимались сбором кокосовых орехов. Вечером они сложили все орехи в кучу и легли спать.
...
К сожалению, очень похожая задача уже была.
Одно из множества решений: -4. ( просто решение уравнения х-1-(х-1)/5=х )
Один орех — мартышке, остаётся -5.
Забираем пятую часть (-1), остаётся -5 — (-1) = -4.
Остальные матросы повторяют.
Кстати, это решение подходит даже если матросы страдают склерозом, и за ночь эту процедуру каждый проделывает много раз.
A>Спрашиваться сколько лет моей прабабушке... шутка Сколько было орехов (моей прабабке почти столько же)
Я не претендую на решение(лениво много думать), но все же, ты говоришь о своей прабабке в каком поколении? Люди столько не живут
Как только я допер, с какими суммами придется иметь дело, чтобы делилось всегда нацело, решил усомниться в возрасте твоей прабабки.
Я промоделировал процесс на компе(чтоб быстрей проверить) и дал ему по циклу протестировать начальные количества орехов от 1 до миллиона.
Минимальное подходящее число оказалось на числе 3121(!). Тогда во всех операциях орехи нормально делятся нацело.
Всего в этом промежутке(до миллиона) подошло 64 варианта.
привожу скрипт на Perl(к решению он все-равно никого не подтолкнет, но если я вдруг не прав, хоть покажите, где ошибка):
Файл kokos.pl:
#!/usr/bin/perlmy $max = $ARGV[0]+1;
my @res = ();
for (my $i=1;$i<$max;$i++) {
@res = calc($i);
print"$res[1]\n"if ($res[0]);
}
sub calc {
my $sum = shift;
my $h=0; # сколько отобрал текущий матрос ночьюmy $m = 0; # счетчик мартышкиных орехов, он же индекс текущего матросаmy $o=0; # осталось на утроmy $rsum=0; # досталось каждому матросу после утреннего разделаmy $rstr='';
$rstr.="TEST[$sum]: ";
while ($m<5) {
$h = ($sum-1)/5;
if (int($h)!=$h) { $rstr.="Fail"; return (0, $rstr); }
$m++;
$sum=$h*4;
$rstr.=" H$m=$h;";
}
$o = $sum;
$rstr.=" O=$o;";
$rsum = $o/5;
if (int($rsum)!=$rsum) { $rstr.="Fail"; return (0, $rstr); }
$rstr.=" RSUM=$rsum; Done!!!";
return (1, $rstr);
}
1;
TEST[b]xxx[/b]], xxx — тестируемое число изначально собранных орехов. Hx — Матрос номер x, точнее, его количество спертых ночью орехов. O — общий остаток орехов наутро. RSUM — сколько орехов получил каждый утром, в дополнение к награбленному ночью.
С обезьяной все понятно — получила 5 орехов.
проверка первой строки результатов: 5+O+H5+H4+H3+H2+H1=5+1020+255+319+399+499+624=3121;
Здравствуйте, mrhru, Вы писали:
M>Одно из множества решений: -4. ( просто решение уравнения х-1-(х-1)/5=х ) M>Один орех — мартышке, остаётся -5. M>Забираем пятую часть (-1), остаётся -5 — (-1) = -4.
M>Остальные матросы повторяют.
M>Кстати, это решение подходит даже если матросы страдают склерозом, и за ночь эту процедуру каждый проделывает много раз.
Осталось совсем немного. Очевидно, что если к полученному решению добавить 5^5, то оно останется решением.
Может уже было. Я не нашёл. Внимание, мне нужно не просто решение, а красивое решение.
Пять матросов и мартышка потерпели кораблекрушение и высадились на необитаемом острове. Весь первый день они занимались сбором кокосовых орехов. Вечером они сложили все орехи в кучу и легли спать.
Ночью, когда все заснули, первый матрос (скажем Августин) проснулся. Он решил, что утром при разделе орехов будет дуэль и решил взять свою долю орехов немедля. Для этого он разделил все орехи на 5 равных кучек, а один оставшийся орех отдал мартышке. Затем он спрятал свою долю, а остальные орехи снова сложил в одну кучу.
Через некоторое время проснулся второй матрос (скажем Макар). Он решил, что утром при разделе орехов будет мордобой и решил взять свою долю орехов немедля. Для этого он разделил все орехи на 5 равных кучек, а один оставшийся орех отдал мартышке. Затем он спрятал свою долю, а остальные орехи снова сложил в одну кучу.
После этого проснулся матрос номер три (скажем Доку). Он решил, что утром при разделе орехов будет схватка и решил взять свою долю орехов немедля. Для этого он разделил все орехи на 5 равных кучек, а один оставшийся орех отдал мартышке. Затем он спрятал свою долю, а остальные орехи снова сложил в одну кучу.
Затем проснулся матрос — четвёртый номер (скажем Махмуд). Он решил, что утром при разделе орехов будет джихад и решил взять свою долю орехов немедля. Для этого он разделил все орехи на 5 равных кучек, а один оставшийся орех отдал мартышке. Затем он спрятал свою долю, а остальные орехи снова сложил в одну кучу.
В конце проснулся пятый матрос (скажем Луис-Альберто). Он решил, что утром при разделе орехов ему могут дать по башке и он потерят память, поэтому он решил взять свою долю орехов немедля. Для этого он разделил все орехи на 5 равных кучек, а один оставшийся орех отдал мартышке. Затем он спрятал свою долю, а остальные орехи снова сложил в одну кучу.
По утру, когда все проснулись, оставшиеся орехи разделили на 5 равных частей и каждый взял свою долю. Мартышке ничего не досталось. Все помнили, что вечером орехов были больше, но у каждого совесть была нечиста, так что никто ничего не сказал.
Спрашиваться сколько лет моей прабабушке... шутка Сколько было орехов (моей прабабке почти столько же)
Здравствуйте, DSD, Вы писали:
DSD>Здравствуйте, adontz, Вы писали:
A>Спрашиваться сколько лет моей прабабушке... шутка Сколько было орехов (моей прабабке почти столько же) DSD>Я не претендую на решение(лениво много думать), но все же, ты говоришь о своей прабабке в каком поколении? Люди столько не живут
Ну я вам про красивое решение, а вы мне перебор
DSD>Так сколько же лет твоей прабабке?!?!?!?!
Почти 3121 Она у меня кавказский долгожитель !!
Здравствуйте, mrhru, Вы писали:
M>К сожалению, очень похожая задача уже была.
Очень, жаль, я честно искал...
M>Одно из множества решений: -4. ( просто решение уравнения х-1-(х-1)/5=х ) M>Один орех — мартышке, остаётся -5. M>Забираем пятую часть (-1), остаётся -5 — (-1) = -4.
M>Остальные матросы повторяют.
M>Кстати, это решение подходит даже если матросы страдают склерозом, и за ночь эту процедуру каждый проделывает много раз.
В общем топравильно, если б вы еще и положительный ответ нашли...