Мартышка и пять матросов
От: adontz Грузия http://adontz.wordpress.com/
Дата: 14.05.03 19:58
Оценка:
Может уже было. Я не нашёл. Внимание, мне нужно не просто решение, а красивое решение.

Пять матросов и мартышка потерпели кораблекрушение и высадились на необитаемом острове. Весь первый день они занимались сбором кокосовых орехов. Вечером они сложили все орехи в кучу и легли спать.
Ночью, когда все заснули, первый матрос (скажем Августин) проснулся. Он решил, что утром при разделе орехов будет дуэль и решил взять свою долю орехов немедля. Для этого он разделил все орехи на 5 равных кучек, а один оставшийся орех отдал мартышке. Затем он спрятал свою долю, а остальные орехи снова сложил в одну кучу.
Через некоторое время проснулся второй матрос (скажем Макар). Он решил, что утром при разделе орехов будет мордобой и решил взять свою долю орехов немедля. Для этого он разделил все орехи на 5 равных кучек, а один оставшийся орех отдал мартышке. Затем он спрятал свою долю, а остальные орехи снова сложил в одну кучу.
После этого проснулся матрос номер три (скажем Доку). Он решил, что утром при разделе орехов будет схватка и решил взять свою долю орехов немедля. Для этого он разделил все орехи на 5 равных кучек, а один оставшийся орех отдал мартышке. Затем он спрятал свою долю, а остальные орехи снова сложил в одну кучу.
Затем проснулся матрос — четвёртый номер (скажем Махмуд). Он решил, что утром при разделе орехов будет джихад и решил взять свою долю орехов немедля. Для этого он разделил все орехи на 5 равных кучек, а один оставшийся орех отдал мартышке. Затем он спрятал свою долю, а остальные орехи снова сложил в одну кучу.
В конце проснулся пятый матрос (скажем Луис-Альберто). Он решил, что утром при разделе орехов ему могут дать по башке и он потерят память, поэтому он решил взять свою долю орехов немедля. Для этого он разделил все орехи на 5 равных кучек, а один оставшийся орех отдал мартышке. Затем он спрятал свою долю, а остальные орехи снова сложил в одну кучу.

По утру, когда все проснулись, оставшиеся орехи разделили на 5 равных частей и каждый взял свою долю. Мартышке ничего не досталось. Все помнили, что вечером орехов были больше, но у каждого совесть была нечиста, так что никто ничего не сказал.

Спрашиваться сколько лет моей прабабушке... шутка Сколько было орехов (моей прабабке почти столько же)
A journey of a thousand miles must begin with a single step © Lau Tsu
Re: Мартышка и пять матросов
От: DSD Россия http://911.ru/cv
Дата: 14.05.03 22:32
Оценка: 24 (1)
Здравствуйте, adontz, Вы писали:


A>Спрашиваться сколько лет моей прабабушке... шутка Сколько было орехов (моей прабабке почти столько же)

Я не претендую на решение(лениво много думать), но все же, ты говоришь о своей прабабке в каком поколении? Люди столько не живут

Как только я допер, с какими суммами придется иметь дело, чтобы делилось всегда нацело, решил усомниться в возрасте твоей прабабки.
Я промоделировал процесс на компе(чтоб быстрей проверить) и дал ему по циклу протестировать начальные количества орехов от 1 до миллиона.
Минимальное подходящее число оказалось на числе 3121(!). Тогда во всех операциях орехи нормально делятся нацело.
Всего в этом промежутке(до миллиона) подошло 64 варианта.

привожу скрипт на Perl(к решению он все-равно никого не подтолкнет, но если я вдруг не прав, хоть покажите, где ошибка):
Файл kokos.pl:
#!/usr/bin/perl

my $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;


Вызов был: perl kokos.pl 1000000 >kokos.txt

А это первые 10 строк результатов:
TEST[3121]:  H1=624; H2=499; H3=399; H4=319; H5=255; O=1020; RSUM=204; Done!!!
TEST[18746]:  H1=3749; H2=2999; H3=2399; H4=1919; H5=1535; O=6140; RSUM=1228; Done!!!
TEST[34371]:  H1=6874; H2=5499; H3=4399; H4=3519; H5=2815; O=11260; RSUM=2252; Done!!!
TEST[49996]:  H1=9999; H2=7999; H3=6399; H4=5119; H5=4095; O=16380; RSUM=3276; Done!!!
TEST[65621]:  H1=13124; H2=10499; H3=8399; H4=6719; H5=5375; O=21500; RSUM=4300; Done!!!
TEST[81246]:  H1=16249; H2=12999; H3=10399; H4=8319; H5=6655; O=26620; RSUM=5324; Done!!!
TEST[96871]:  H1=19374; H2=15499; H3=12399; H4=9919; H5=7935; O=31740; RSUM=6348; Done!!!
TEST[112496]:  H1=22499; H2=17999; H3=14399; H4=11519; H5=9215; O=36860; RSUM=7372; Done!!!
TEST[128121]:  H1=25624; H2=20499; H3=16399; H4=13119; H5=10495; O=41980; RSUM=8396; Done!!!
TEST[143746]:  H1=28749; H2=22999; H3=18399; H4=14719; H5=11775; O=47100; RSUM=9420; Done!!!
...


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;

Так сколько же лет твоей прабабке?!?!?!?!
--
DSD
Re: Мартышка и пять матросов
От: mrhru Россия  
Дата: 15.05.03 01:30
Оценка: 29 (2) :)
Здравствуйте, adontz, Вы писали:

A>Может уже было. Я не нашёл. Внимание, мне нужно не просто решение, а красивое решение.


A>Пять матросов и мартышка потерпели кораблекрушение и высадились на необитаемом острове. Весь первый день они занимались сбором кокосовых орехов. Вечером они сложили все орехи в кучу и легли спать.


...

К сожалению, очень похожая задача уже была.

Одно из множества решений: -4. ( просто решение уравнения х-1-(х-1)/5=х )
Один орех — мартышке, остаётся -5.
Забираем пятую часть (-1), остаётся -5 — (-1) = -4.

Остальные матросы повторяют.

Кстати, это решение подходит даже если матросы страдают склерозом, и за ночь эту процедуру каждый проделывает много раз.

Re[2]: Мартышка и пять матросов
От: adontz Грузия http://adontz.wordpress.com/
Дата: 15.05.03 04:09
Оценка:
Здравствуйте, DSD, Вы писали:

DSD>Здравствуйте, adontz, Вы писали:



A>Спрашиваться сколько лет моей прабабушке... шутка Сколько было орехов (моей прабабке почти столько же)

DSD>Я не претендую на решение(лениво много думать), но все же, ты говоришь о своей прабабке в каком поколении? Люди столько не живут

Ну я вам про красивое решение, а вы мне перебор

DSD>Так сколько же лет твоей прабабке?!?!?!?!

Почти 3121 Она у меня кавказский долгожитель !!
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[2]: Мартышка и пять матросов
От: adontz Грузия http://adontz.wordpress.com/
Дата: 15.05.03 04:10
Оценка:
Здравствуйте, mrhru, Вы писали:

M>К сожалению, очень похожая задача уже была.

Очень, жаль, я честно искал...

M>Одно из множества решений: -4. ( просто решение уравнения х-1-(х-1)/5=х )

M>Один орех — мартышке, остаётся -5.
M>Забираем пятую часть (-1), остаётся -5 — (-1) = -4.

M>Остальные матросы повторяют.


M>Кстати, это решение подходит даже если матросы страдают склерозом, и за ночь эту процедуру каждый проделывает много раз.


В общем топравильно, если б вы еще и положительный ответ нашли...
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[2]: Мартышка и пять матросов
От: MichaelP  
Дата: 15.05.03 07:03
Оценка: 3 (1)
Здравствуйте, mrhru, Вы писали:

M>Одно из множества решений: -4. ( просто решение уравнения х-1-(х-1)/5=х )

M>Один орех — мартышке, остаётся -5.
M>Забираем пятую часть (-1), остаётся -5 — (-1) = -4.

M>Остальные матросы повторяют.


M>Кстати, это решение подходит даже если матросы страдают склерозом, и за ночь эту процедуру каждый проделывает много раз.


Осталось совсем немного. Очевидно, что если к полученному решению добавить 5^5, то оно останется решением.

Окончательно получаем:
5^5*n - 4


Для n=1 — 3121. Знакомое решение, не правда ли?
Re[3]: Мартышка и пять матросов
От: Chorkov Россия  
Дата: 15.05.03 07:07
Оценка: +1
Здравствуйте, adontz, Вы писали:

...
M>К сожалению, очень похожая задача уже была.
A>Очень, жаль, я честно искал...
...
Справедливые рыбаки
Автор: mrhru
Дата: 16.01.03
Re[3]: 5^5*(5*n+1) - 4
От: Vi2 Удмуртия http://www.adem.ru
Дата: 15.05.03 11:20
Оценка: 41 (3)
Здравствуйте, MichaelP, Вы писали:

MP>Окончательно получаем: 5^5*n — 4

А вот и нет!

MP>Для n=1 — 3121. Знакомое решение, не правда ли?

Для n=1
1 - 3121=>624 624 624 624 624 1. Осталось 4*624=2496
2 - 2496=>499 499 499 499 499 1. Осталось 4*499=1996
3 - 1996=>399 399 399 399 399 1. Осталось 4*399=1596
4 - 1596=>319 319 319 319 319 1. Осталось 4*319=1276
5 - 1276=>255 255 255 255 255 1. Осталось 4*255=1020

и окончательный раздел — 1020=>204 204 204 204 204
Но для n=2 это не проходит 3125*2-4 = 6246
1 - 6246=>1249 1249 1249 1249 1249 1. Осталось 4*1249=4996
2 - 4996=>999 999 999 999 999 1. Осталось 4*999=3996
3 - 3996=>799 799 799 799 799 1. Осталось 4*799=3196
4 - 3196=>639 639 639 639 639 1. Осталось 4*639=2556
5 - 2556=>511 511 511 511 511 1. Осталось 4*511=2044

и кучка не делится на 5! Это потому что матросы, в отличие от рыбаков, не ушли.

А ответ 5^5*(5*n+1) — 4
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.