fortpost
Высший разум
  
Offline
Сообщений: 6853
СПАСИБО
-вы поблагодарили: 1794
-вас поблагодарили: 2269
|
 |
� : Февраль 29, 2012, 23:34:33 � |
|
В розыгрыше главного приза телевизионной лотереи участвовало 300 человек. Они выстроились по кругу, затем, начиная с кого-то, получившего номер 1, их стали пересчитывать. При этом каждый третий всякий раз выбывал. (Так, на первом круге выбыли все с номерами, кратными 3.) Счет продолжался до тех пор, пока не остался один человек. Этот человек и получил главный приз. (Им случайно оказалась теща телережиссера.) Какой номер в первоначальной расстановке имел победитель?
|
|
|
Записан
|
Лучший способ оказаться в дураках, это считать себя умнее других. Ф. Ларошфуко
|
|
|
moonlight
Умник
  
Offline
Сообщений: 741
СПАСИБО
-вы поблагодарили: 19
-вас поблагодарили: 232
|
 |
� Ответ #1 : Март 01, 2012, 00:24:11 � |
|
|
Зачем откладывать на завтра то, что можно отложить на послезавтра?
|
|
|
монЯрхъ
Гений-Говорун
Offline
Сообщений: 1246
СПАСИБО
-вы поблагодарили: 107
-вас поблагодарили: 88
Етить меня растудыть!
|
 |
� Ответ #2 : Март 01, 2012, 08:50:27 � |
|
Хау? Хау вы это посчитали? Решение! 
|
|
|
Записан
|
Секунды умирают стайками по шестьдесят, образуя минуты. (Бегбедер Ф.)
|
|
|
семеныч
|
 |
� Ответ #3 : Март 01, 2012, 15:00:53 � |
|
решение бы 
|
|
|
Записан
|
звездовод-числоблуд
|
|
|
☭-Изделие 20Д
|
 |
� Ответ #4 : Март 01, 2012, 18:19:43 � |
|
Показать скрытый текст Ну хотя бы - 200, а надёжней - 298
|
|
� Последнее редактирование: Март 01, 2012, 18:23:30 от Изделие 20Д �
|
Записан
|
|
|
|
fortpost
Высший разум
  
Offline
Сообщений: 6853
СПАСИБО
-вы поблагодарили: 1794
-вас поблагодарили: 2269
|
 |
� Ответ #5 : Март 01, 2012, 20:31:25 � |
|
И у меня 191. Считал с помощью сей программы. Показать скрытый текст Program JosivFlaviye; Uses CRT; Const n: integer = 300; Type tp = ^bt; bt = record inf: integer; lnk: tp; off: Boolean; End; Var t, top: tp; f: tp; i:integer; k: integer; o: integer;
Procedure Print; Begin f := t; For i := 1 to n do Begin Write(f^.inf,' '); f := f^.lnk; End; End;
Procedure Schet(s: Byte); Begin t := top; For o := 1 to n - 1 do Begin i := 1; Repeat If (t^.off = False) then inc(i); t := t^.lnk; Until (i = k) and (t^.off = False); Writeln('Вычеркнули ',t^.inf); t^.off := True; End; End;
Begin ClrScr; top := nil; For i := n downto 1 do Begin t := New(tp); t^.inf := i; t^.lnk := top; t^.off := False; top := t; End; f := t; For i := 1 to n-1 do Begin f := f^.lnk; End; f^.lnk := t; Print; Write(#13#10,'До скольки считать: '); Readln(k); Schet(k); While (t^.off = True) do t := t^.lnk; Writeln('Остался ',t^.inf); ReadKey; End.
|
Лучший способ оказаться в дураках, это считать себя умнее других. Ф. Ларошфуко
|
|
|
fortpost
Высший разум
  
Offline
Сообщений: 6853
СПАСИБО
-вы поблагодарили: 1794
-вас поблагодарили: 2269
|
 |
� Ответ #6 : Март 02, 2012, 09:57:45 � |
|
А можно посчитать экспериментально. Одна девочка написала: «Мой папа командир полка. Он выстроил по кругу 300 солдат и приказал им пересчитаться в соответствии с условием. Остался солдат под номером 191 . Он помог мне решить остальные задачи олимпиады, так как окончил 2 курса математического факультета».
|
|
|
Записан
|
Лучший способ оказаться в дураках, это считать себя умнее других. Ф. Ларошфуко
|
|
|
семеныч
|
 |
� Ответ #7 : Март 02, 2012, 12:22:13 � |
|
тогда решите такую-же  У Васи день рождения такой: 365 дней.Выбрасываем каждое пятое число пока и не останется 1 день - день рождения Васи это будет какое число какого месяца??
|
|
|
Записан
|
звездовод-числоблуд
|
|
|
kiwi
Давненько

Offline
Сообщений: 91
СПАСИБО
-вы поблагодарили: 15
-вас поблагодарили: 12
kогда-нибудь я взлечу...
|
 |
� Ответ #8 : Март 02, 2012, 20:23:12 � |
|
У меня вышел 86-й день, то есть 26 марта Правда, вероятность, что я в ходе вычёркиваний ошиблась, ОООчень велика...
|
|
|
Записан
|
|
|
|
Seamew
Умник
  
Offline
Сообщений: 509
СПАСИБО
-вы поблагодарили: 76
-вас поблагодарили: 148
будет буря
|
 |
� Ответ #9 : Март 02, 2012, 20:25:15 � |
|
ну должен же быть какой-то алгоритм... на 1-ом, 2-ом шаге симметрию нашла.. а дальше никак((
|
|
|
Записан
|
Над седой равниной моря гордо реет буревестник..
|
|
|
kiwi
Давненько

Offline
Сообщений: 91
СПАСИБО
-вы поблагодарили: 15
-вас поблагодарили: 12
kогда-нибудь я взлечу...
|
 |
� Ответ #10 : Март 02, 2012, 20:32:47 � |
|
Я делала тупо: сказали вычеркивать - окай, будем вычёркивать
|
|
|
Записан
|
|
|
|
Seamew
Умник
  
Offline
Сообщений: 509
СПАСИБО
-вы поблагодарили: 76
-вас поблагодарили: 148
будет буря
|
 |
� Ответ #11 : Март 02, 2012, 20:41:14 � |
|
ну это одноразовый подход.. должна же быть общая формула для расчета любого набора цифр
|
|
|
Записан
|
Над седой равниной моря гордо реет буревестник..
|
|
|
fortpost
Высший разум
  
Offline
Сообщений: 6853
СПАСИБО
-вы поблагодарили: 1794
-вас поблагодарили: 2269
|
 |
� Ответ #12 : Март 02, 2012, 21:12:16 � |
|
После долгих и сложных расчетов получается 91 день. Ему соответствует дата 1 апреля. Зная Семёныча, приходим к выводу, что ответ правильный.
|
|
|
Записан
|
Лучший способ оказаться в дураках, это считать себя умнее других. Ф. Ларошфуко
|
|
|
fortpost
Высший разум
  
Offline
Сообщений: 6853
СПАСИБО
-вы поблагодарили: 1794
-вас поблагодарили: 2269
|
 |
� Ответ #13 : Март 02, 2012, 21:21:21 � |
|
ну это одноразовый подход.. должна же быть общая формула для расчета любого набора цифр
Та не так все просто. Этой задаче почти 2000 лет, и общее решение до сих пор не найдено. Подробности здесь. //текст доступен после регистрации//
|
|
|
Записан
|
Лучший способ оказаться в дураках, это считать себя умнее других. Ф. Ларошфуко
|
|
|
moonlight
Умник
  
Offline
Сообщений: 741
СПАСИБО
-вы поблагодарили: 19
-вас поблагодарили: 232
|
 |
� Ответ #14 : Март 02, 2012, 21:54:40 � |
|
Я тоже программой считал. Вот моя. using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace Fortpost { class Program { struct A { public int pred, next; }
static int F(int n, int k) { A[] mass = new A[n]; for (int i = 0; i < n; i++) { mass[i].pred = (i == 0 ? n - 1 : i - 1); mass[i].next = (i == n - 1 ? 0 : i + 1); } int p = 0; while (mass[p].next != mass[p].pred) { int s = 0; while (s < k) { p = mass[p].next; s++; } mass[mass[p].pred].next = mass[p].next; mass[mass[p].next].pred = mass[p].pred; } return mass[p].next; }
static void Main(string[] args) { Console.WriteLine(F(300, 3)); Console.ReadLine(); } } }
|
|
� Последнее редактирование: Март 02, 2012, 21:58:58 от moonlight �
|
Записан
|
Зачем откладывать на завтра то, что можно отложить на послезавтра?
|
|
|
|