Задания
Версия для печати и копирования в MS Word
Тип Д19 C7 № 527493
i

За­да­но число от 1 до n. За один ход можно вы­брать про­из­воль­ное под­мно­же­ство мно­же­ства чисел от 1 до n и спро­сить, при­над­ле­жит ли ему за­дан­ное число. При от­ве­те «да» будет на­чис­ле­но a бал­лов, при от­ве­те «нет»  — b бал­лов.

а)  Можно ли на­вер­ня­ка уга­дать число, по­лу­чив не менее 16 и не более 21 бал­лов, если a=3, b=1, n=128?

б)  Может ли n быть рав­ным 144, если из­вест­но, что число можно на­вер­ня­ка уга­дать, по­лу­чив не менее 11 бал­лов, и при этом a=2, 1 мень­ше или равно b\leqslant4?

в)  Какую наи­мень­шую сумму бал­лов можно по­лу­чить, чтобы на­вер­ня­ка уга­дать число, если a=3, b=1, 128 мень­ше или равно n\leqslant170? Пункт в) пе­ре­бор­ный, ре­ша­ет­ся при по­мо­щи ком­пью­те­ра.

Спрятать решение

Ре­ше­ние.

Уга­ды­ва­ю­ще­му сле­ду­ет вы­би­рать под­мно­же­ства так, чтобы как можно чаще услы­шать ответ «да»  — чтобы на­брать боль­ше бал­лов. По­это­му ему сле­ду­ет де­лить мно­же­ство чисел на части с боль­шим и мень­шим ко­ли­че­ством чисел и спра­ши­вать про мень­шую часть. Если от­ве­ча­ю­щий ска­жет «да», то у уга­ды­ва­ю­ще­го оста­нет­ся мало ва­ри­ан­тов, и от­ве­ча­ю­щий не смо­жет много раз ска­зать «да». С дру­гой сто­ро­ны, если от­ве­ча­ю­щий ска­жет «нет», то ва­ри­ан­тов оста­нет­ся боль­ше, но за ответ «нет» на­чис­ля­ет­ся мень­ше бал­лов. Уга­ды­ва­ю­ще­му надо по­до­брать со­от­но­ше­ние между ко­ли­че­ством оста­ю­щих­ся ва­ри­ан­тов и раз­но­стью бал­ла­ми за ответ «да» по срав­не­нию с «нет».

 

а)  Раз­де­лим числа на две рав­ные груп­пы и спро­сим про одну из них. Не­за­ви­си­мо от от­ве­та, оста­нет­ся ровно 64 по­до­зри­тель­ных числа. Про­дол­жая де­лить по­по­лам, мы будем по­лу­чать 32, 16, 8, 4, 2, 1 по­до­зри­тель­ное число. Это 7 во­про­сов, число уга­да­но и число бал­лов не пре­вос­хо­дит 21. Если оно мень­ше 16, будет за­да­вать до­пол­ни­тель­ные во­про­сы про какое-ни­будь дру­гое число, по­лу­чая от­ве­ты «нет» до тех пор, пока не на­бе­рем 16 бал­лов.

б)  Да. Пусть b=2, а за­га­ды­ва­ю­щий при каж­дом ходе от­ве­ча­ет так, чтобы от­бро­си­лось не более по­ло­ви­ны воз­мож­ных за­га­дан­ных чисел. Тогда после пер­во­го во­про­са оста­нет­ся не менее 72 кан­ди­да­тов, после вто­ро­го  — не менее 36, затем 18, затем 9, затем 5. Итак, нужно не менее шести (а на самом деле вось­ми) во­про­сов, по­это­му для га­ран­ти­ро­ван­но­го уга­ды­ва­ния при­дет­ся по­лу­чить ми­ни­мум 8 умно­жить на 2=16 бал­лов.

в)  Будем счи­тать, что n=170  — от того, что не­сколь­ко боль­ших чисел будут за­пре­ще­ны, нам может стать толь­ко легче уга­дать число. Обо­зна­чим за f левая круг­лая скоб­ка x пра­вая круг­лая скоб­ка ми­ни­маль­ное число бал­лов, до­ста­точ­ное для уга­ды­ва­ния числа из x ва­ри­ан­тов  — оче­вид­но, со­вер­шен­но не­важ­но, из каких имен­но x ва­ри­ан­тов про­ис­хо­дит уга­ды­ва­ние. Ясно также, что f левая круг­лая скоб­ка x пра­вая круг­лая скоб­ка   — не­убы­ва­ю­щая функ­ция и f левая круг­лая скоб­ка 1 пра­вая круг­лая скоб­ка =0, f левая круг­лая скоб­ка 2 пра­вая круг­лая скоб­ка =3 (мы можем по­лу­чить на наш пер­вый же во­прос ответ «да»).

Если есть x кан­ди­да­тов, то мы раз­би­ва­ем их на две груп­пы, y и x минус y, и спра­ши­ва­ем про первую груп­пу. При от­ве­те «да» поль­зу­ясь оп­ти­маль­ным ал­го­рит­мом, мы по­лу­чим 3 плюс f левая круг­лая скоб­ка y пра­вая круг­лая скоб­ка бал­лов, при от­ве­те «нет»  — 1 плюс f левая круг­лая скоб­ка x минус y пра­вая круг­лая скоб­ка бал­лов. Зна­чит, для та­ко­го раз­би­е­ния га­ран­ти­ру­ю­щее число бал­лов равно \max левая фи­гур­ная скоб­ка 3 плюс f левая круг­лая скоб­ка y пра­вая круг­лая скоб­ка ,1 плюс f левая круг­лая скоб­ка x минус y пра­вая круг­лая скоб­ка пра­вая фи­гур­ная скоб­ка . Пе­ре­би­рая все зна­че­ния y от 1 до x минус 1, мы, есте­ствен­но, вы­бе­рем из них то, для ко­то­ро­го этот мак­си­мум ми­ни­ма­лен. Итак,

f левая круг­лая скоб­ка x пра­вая круг­лая скоб­ка =\min\limits_y при­над­ле­жит левая квад­рат­ная скоб­ка 1;x минус 1 пра­вая квад­рат­ная скоб­ка \max левая фи­гур­ная скоб­ка 3 плюс f левая круг­лая скоб­ка y пра­вая круг­лая скоб­ка ,1 плюс f левая круг­лая скоб­ка x минус y пра­вая круг­лая скоб­ка пра­вая фи­гур­ная скоб­ка .

При­ве­дем при­мер. Пусть x=3. Тогда при y=1 имеем

\max левая фи­гур­ная скоб­ка 3 плюс f левая круг­лая скоб­ка 1 пра­вая круг­лая скоб­ка ,1 плюс f левая круг­лая скоб­ка 2 пра­вая круг­лая скоб­ка пра­вая фи­гур­ная скоб­ка =\max левая фи­гур­ная скоб­ка 3,4 пра­вая фи­гур­ная скоб­ка =4,

а при y=2 имеем

\max левая фи­гур­ная скоб­ка 3 плюс f левая круг­лая скоб­ка 2 пра­вая круг­лая скоб­ка ,1 плюс f левая круг­лая скоб­ка 1 пра­вая круг­лая скоб­ка пра­вая фи­гур­ная скоб­ка =\max левая фи­гур­ная скоб­ка 6,1 пра­вая фи­гур­ная скоб­ка =6,

по­это­му f левая круг­лая скоб­ка 3 пра­вая круг­лая скоб­ка =4, а оп­ти­маль­ный ал­го­ритм  — пер­вым во­про­сом спро­сить про мно­же­ство из од­но­го числа.

 

Поль­зу­ясь этим со­от­но­ше­ни­ем, можно по оче­ре­ди на­хо­дить зна­че­ния f левая круг­лая скоб­ка n пра­вая круг­лая скоб­ка . Но это очень долго, по­это­му мы на­пря­жем на этот пе­ре­бор ком­пью­тер­ную про­грам­му:

 

program ball;

var

    f: array [1..170] of integer;

    x, y, a, b, c: integer;

begin

    for x := 1 to 170 do f[x] := 0;

    f[2] := 3;

    for x := 3 to 170 do begin

        c := 10000;

        for y := 1 to x − 1 do begin

            if (3 + f[y] > 1 + f[x − y]) and (3 + f[y] < c) then c := 3 + f[y];

            if (3 + f[y] <= 1 + f[x − y]) and (1 + f[x − y] < c) then c := 1 + f[x − y];

        end;

        f[x] := c;

        writeln('f(',x,')=', f[x]);

    end;

end.

 

По­лу­ча­ем в ре­зуль­та­те ее ра­бо­ты сле­ду­ю­щие дан­ные: f левая круг­лая скоб­ка 3 пра­вая круг­лая скоб­ка =4, f левая круг­лая скоб­ка 4 пра­вая круг­лая скоб­ка =5, f левая круг­лая скоб­ка 5..6 пра­вая круг­лая скоб­ка =6, f левая круг­лая скоб­ка 7..9 пра­вая круг­лая скоб­ка =7, f левая круг­лая скоб­ка 10..13 пра­вая круг­лая скоб­ка =8, f левая круг­лая скоб­ка 14..19 пра­вая круг­лая скоб­ка =9, f левая круг­лая скоб­ка 20..28 пра­вая круг­лая скоб­ка =10, f левая круг­лая скоб­ка 29..41 пра­вая круг­лая скоб­ка =11, f левая круг­лая скоб­ка 42..60 пра­вая круг­лая скоб­ка =12, f левая круг­лая скоб­ка 61..88 пра­вая круг­лая скоб­ка =13, f левая круг­лая скоб­ка 89..129 пра­вая круг­лая скоб­ка =14, f левая круг­лая скоб­ка 130..170 пра­вая круг­лая скоб­ка =15. По­это­му ответ 15.

 

Ответ: 15.

 

 

Ком­мен­та­рий.

На фо­ру­ме у Ла­ри­на, где была пред­ло­же­на эта за­да­ча, ее усло­вие по­ни­ма­ют как-то по-дру­го­му.

 

При­ме­ча­ние. Ре­ко­мен­ду­ем срав­нить эту за­да­чу с за­да­чей окруж­но­го этапа Все­рос­сий­ской олим­пи­а­ды школь­ни­ков по ма­те­ма­ти­ке 1998 год, 10 класс (см. ниже).

 

ЗА­ДА­ЧА:

За­га­да­но число от 1 до 144. Раз­ре­ша­ет­ся вы­де­лить одно под­мно­же­ство мно­же­ства чисел от 1 до 144 и спро­сить, при­над­ле­жит ли ему за­га­дан­ное число. За ответ «да» надо за­пла­тить 2 рубля, за ответ «нет»  — 1 рубль. Какая наи­мень­шая сумма денег не­об­хо­ди­ма для того, чтобы на­вер­ня­ка уга­дать число?

 

РЕ­ШЕ­НИЕ:

 

ОТВЕТ: 11 руб­лей.

Спрятать критерии
Критерии проверки:

Кри­те­рии оце­ни­ва­ния вы­пол­не­ния за­да­нияБаллы
Верно по­лу­че­ны все пе­ре­чис­лен­ные (см. кри­те­рий на 1 балл) ре­зуль­та­ты4
Верно по­лу­че­ны три из пе­ре­чис­лен­ных (см. кри­те­рий на 1 балл) ре­зуль­та­тов3
Верно по­лу­че­ны два из пе­ре­чис­лен­ных (см. кри­те­рий на 1 балл) ре­зуль­та­тов2
Верно по­лу­чен один из сле­ду­ю­щий ре­зуль­та­тов:

— обос­но­ван­ное ре­ше­ние пунк­та а;

— обос­но­ван­ное ре­ше­ние пунк­та б;

— оцен­ка в пунк­те в;

— при­мер в пунк­те в, обес­пе­чи­ва­ю­щий точ­ность най­ден­ной оцен­ки

1
Ре­ше­ние не со­от­вет­ству­ет ни од­но­му из кри­те­ри­ев, пе­ре­чис­лен­ных выше0
Мак­си­маль­ный балл4
Источник: А. Ларин. Тре­ни­ро­воч­ный ва­ри­ант № 264