Ответы на вопрос:
//pascal abc.net v3.0 сборка 1111 var a,i: integer; s: string; begin readln(a); str(a,s); //переводим число в строку, вот такой я нехороший for a: =1 to length(s)-1 do for i: =a+1 to length(s) do if s[a]=s[i] then begin; writeln('yes'); exit; end; writeln('no'); end.пример ввода: 1224пример вывода: yes
Вданном случае наилучшей является стратегия половинного деления. сначала определяем страницу. будем делить каждый раз количество страниц, содержащих нужную, пополам. первый вопрос: "нужная страница имеет номер больше 40? " если да, то рассматриваем страницы с 41 по 80, если нет - то страницы с 1 до 40. второй вопрос для случая, когда номер страницы был больше 40 будет выглядеть так: "нужная страница имеет номер больше 60? ". а если номер страницы был не больше 40, то спрашиваем "нужная страница имеет номер больше 20? ". при такой схеме количество необходимых вопросов будет равно 7 ( 2⁶< 80< 2⁷). найдя нужную страницу по такой же схеме ищем номер слова (от 1 до 50). поскольку 2⁵< 50< 2⁶, то потребуется задать 6 вопросов. 7 вопросов для определения номера страницы и 6 для определения номера слова на ней - всего 13 вопросов. поэтому за 12 вопросов отгадать слово не удастся. в то же время, если бы можно было пронумеровать все слова от 1 до 4000 (50х80=4000) и задавать вопросы по порядковым номерам слов, то 12 вопросов хватило бы (2¹¹< 4000< 2¹²)
Популярно: Информатика
-
sashunyakotova12.07.2022 22:28
-
ironfist208.04.2022 00:09
-
мошкада07.03.2022 15:29
-
lina16mgstar17.08.2020 07:35
-
Жандос111111зшо18.06.2020 15:22
-
vihfdif23759Andr467522.06.2020 18:39
-
volchica23200526.09.2020 04:22
-
AgafAl10.03.2023 02:16
-
Stanislav6905.06.2022 09:22
-
Aliska0012901.03.2023 15:59