Вариант № 2053732

Задания для школы экспертов. Информатика. 2016 год.

При вы­пол­не­нии за­да­ний с крат­ким от­ве­том впи­ши­те в поле для от­ве­та цифру, ко­то­рая со­от­вет­ству­ет но­ме­ру пра­виль­но­го от­ве­та, или число, слово, по­сле­до­ва­тель­ность букв (слов) или цифр. Ответ сле­ду­ет за­пи­сы­вать без про­бе­лов и каких-либо до­пол­ни­тель­ных сим­во­лов. Дроб­ную часть от­де­ляй­те от целой де­ся­тич­ной за­пя­той. Еди­ни­цы из­ме­ре­ний пи­сать не нужно.


Если ва­ри­ант задан учи­те­лем, вы мо­же­те впи­сать или за­гру­зить в си­сте­му от­ве­ты к за­да­ни­ям с раз­вер­ну­тым от­ве­том. Учи­тель уви­дит ре­зуль­та­ты вы­пол­не­ния за­да­ний с крат­ким от­ве­том и смо­жет оце­нить за­гру­жен­ные от­ве­ты к за­да­ни­ям с раз­вер­ну­тым от­ве­том. Вы­став­лен­ные учи­те­лем баллы отоб­ра­зят­ся в вашей ста­ти­сти­ке.



Версия для печати и копирования в MS Word
1
Тип Д24 C1 № 12440
i

На об­ра­бот­ку по­сту­па­ет на­ту­раль­ное число, не пре­вы­ша­ю­щее 109. Нужно на­пи­сать про­грам­му, ко­то­рая вы­во­дит на экран ко­ли­че­ство цифр этого числа, крат­ных 5. Если в числе нет цифр, крат­ных 5, тре­бу­ет­ся на экран вы­ве­сти «NO». Про­грам­мист на­пи­сал про­грам­му не­пра­виль­но. Ниже эта про­грам­ма для Ва­ше­го удоб­ства при­ве­де­на на пяти язы­ках про­грам­ми­ро­ва­ния.

На­по­ми­на­ние: 0 де­лит­ся на любое на­ту­раль­ное число.

 

Бей­сикPython

DIM N, DIGIT, COUNT AS LONG

INPUT N

COUNT = 1

WHILE N > 0

    DIGIT = N MOD 10

    IF DIGIT MOD 5 = 0 THEN

        COUNT = COUNT + DIGIT

    END IF

    N = N \ 10

WEND

IF COUNT = 0 THEN

    PRINT "NO"

ELSE

    PRINT COUNT

END IF

N = int(input())

count = 1

while N > 0:

    digit = N % 10

    if digit % 5 == 0:

        count = count + digit

    N = N // 10

if count == 0:

    print("NO")

else:

    print(count)

Пас­кальАл­го­рит­ми­че­ский язык

var N, digit, count: longint;

begin

    readln(N);

    count := 1;

    while N > 0 do

    begin

        digit := N mod 10;

        if digit mod 5 = 0 then

            count := count + digit;

        N := N div 10;

    end;

    if count = 0 then

        writeln('NO')

    else

        writeln(count)

end.

 

алг

нач

    цел N, digit, count

    ввод N

    count := 1

    нц пока N > 0

        digit := mod(N,10)

        если mod(digit,5) = 0 то

            count := count + digit

        все

        N := div(N,10)

    кц

    если count = 0 то

        вывод "NO"

    иначе

        вывод count

    все

кон

 

Си++

#include <iostream>

using namespace std;

int main()

{

    int N, digit, count;

    cin >> N;

    count = 1;

    while (N > 0)

    {

        digit = N % 10;

        if (digit % 5 == 0)

            count = count + digit;

        N = N / 10;

    }

    if (count == 0)

        cout << "NO";

    else

        cout << count << endl;

    return 0;

}

 

По­сле­до­ва­тель­но вы­пол­ни­те сле­ду­ю­щее.

1.  На­пи­ши­те, что вы­ве­дет эта про­грам­ма при вводе числа 164.

2.  При­ве­ди­те при­мер та­ко­го трёхзнач­но­го числа, при вводе ко­то­ро­го про­грам­ма выдаёт вер­ный ответ.

3.  Най­ди­те все ошиб­ки в этой про­грам­ме (их может быть одна или не­сколь­ко). Из­вест­но, что каж­дая ошиб­ка за­тра­ги­ва­ет толь­ко одну стро­ку

и может быть ис­прав­ле­на без из­ме­не­ния дру­гих строк. Для каж­дой ошиб­ки:

1)  вы­пи­ши­те стро­ку, в ко­то­рой сде­ла­на ошиб­ка;

2)  ука­жи­те, как ис­пра­вить ошиб­ку, т. е. при­ве­ди­те пра­виль­ный ва­ри­ант стро­ки.

До­ста­точ­но ука­зать ошиб­ки и спо­соб их ис­прав­ле­ния для од­но­го языка про­грам­ми­ро­ва­ния.

Об­ра­ти­те вни­ма­ние, что тре­бу­ет­ся найти ошиб­ки в име­ю­щей­ся про­грам­ме,

а не на­пи­сать свою, воз­мож­но, ис­поль­зу­ю­щую дру­гой ал­го­ритм ре­ше­ния. Ис­прав­ле­ние ошиб­ки долж­но за­тра­ги­вать толь­ко стро­ку, в ко­то­рой на­хо­дит­ся ошиб­ка.


Решения заданий с развернутым ответом не проверяются автоматически. Запишите решение на бумаге.
На следующей странице вам будет предложено проверить их самостоятельно.

2
Тип Д25 C2 № 12441
i

Дан це­ло­чис­лен­ный мас­сив из 20 эле­мен­тов. Эле­мен­ты мас­си­ва могут при­ни­мать целые зна­че­ния от –10 000 до 10 000 вклю­чи­тель­но. Опи­ши­те

на есте­ствен­ном языке или на одном из язы­ков про­грам­ми­ро­ва­ния ал­го­ритм, поз­во­ля­ю­щий найти и вы­ве­сти ко­ли­че­ство пар эле­мен­тов мас­си­ва, в ко­то­рых хотя бы одно число де­лит­ся на 13. В дан­ной за­да­че под парой под­ра­зу­ме­ва­ет­ся два под­ряд иду­щих эле­мен­та мас­си­ва. На­при­мер, для мас­си­ва из пяти эле­мен­тов: 6; 2; 13; –26; 14  — ответ: 3.

Ис­ход­ные дан­ные объ­яв­ле­ны так, как по­ка­за­но ниже на при­ме­рах для не­ко­то­рых язы­ков про­грам­ми­ро­ва­ния и есте­ствен­но­го языка. За­пре­ща­ет­ся ис­поль­зо­вать пе­ре­мен­ные, не опи­сан­ные ниже, но раз­ре­ша­ет­ся

не ис­поль­зо­вать не­ко­то­рые из опи­сан­ных пе­ре­мен­ных.

 

 

Бей­сикPython

CONST N AS INTEGER = 20

DIM A (1 TO N) AS INTEGER

DIM I AS INTEGER,

       J AS INTEGER,

       K AS INTEGER

 

FOR I = 1 TO N

INPUT A(I)

NEXT I

...

END

# до­пус­ка­ет­ся также

# ис­поль­зо­вать две

# це­ло­чис­лен­ные пе­ре­мен­ные j и k

a = []

n = 20

for i in range(0, n):

    a.append(int(input()))

...

Пас­кальАл­го­рит­ми­че­ский язык

const

    N = 20;

var

    a: array [1..N] of integer;

    i, j, k: integer;

begin

    for i := 1 to N do

        readln(a[i]);

    ...

end.

алг

нач

    цел N = 20

    цел­таб a[1:N]

    цел i, j, k

    нц для i от 1 до N

        ввод a[i]

    кц

    ...

кон

СиЕсте­ствен­ный язык

#include

#define N 20

int main() {

    int a[N];

    int i, j, k;

    for (i = 0; i < N; i++)

        cin >> a[i];

    ...

    return 0;

}

Объ­яв­ля­ем мас­сив A из 20 эле­мен­тов.

Объ­яв­ля­ем це­ло­чис­лен­ные пе­ре­мен­ные I, J, K.

В цикле от 1 до 20 вво­дим эле­мен­ты мас­си­ва A с 1-го по 20-й.

 

В ка­че­стве от­ве­та Вам не­об­хо­ди­мо при­ве­сти фраг­мент про­грам­мы (или опи­са­ние ал­го­рит­ма на есте­ствен­ном языке), ко­то­рый дол­жен на­хо­дить­ся на месте мно­го­то­чия. Вы мо­же­те за­пи­сать ре­ше­ние также на дру­гом языке про­грам­ми­ро­ва­ния (ука­жи­те на­зва­ние и ис­поль­зу­е­мую вер­сию языка про­грам­ми­ро­ва­ния, на­при­мер Free Pascal 2.6) или в виде блок-схемы. В этом слу­чае Вы долж­ны ис­поль­зо­вать те же самые ис­ход­ные дан­ные и пе­ре­мен­ные, какие были пред­ло­же­ны в усло­вии (на­при­мер, в об­раз­це, за­пи­сан­ном на есте­ствен­ном языке).


Решения заданий с развернутым ответом не проверяются автоматически. Запишите решение на бумаге.
На следующей странице вам будет предложено проверить их самостоятельно.

3
Тип Д26 C3 № 12442
i

Два иг­ро­ка, Петя и Ваня, иг­ра­ют в сле­ду­ю­щую игру. Перед иг­ро­ка­ми лежат две кучи кам­ней. Иг­ро­ки ходят по оче­ре­ди, пер­вый ход де­ла­ет Петя. За один ход игрок может до­ба­вить в одну из куч (по сво­е­му вы­бо­ру) один ка­мень или уве­ли­чить ко­ли­че­ство кам­ней в куче в два раза. На­при­мер, пусть в одной куче 10 кам­ней, а в дру­гой 7 кам­ней; такую по­зи­цию в игре будем обо­зна­чать (10, 7). Тогда за один ход можно по­лу­чить любую из четырёх по­зи­ций: (11, 7), (20, 7), (10, 8), (10, 14). Для того чтобы де­лать ходы, у каж­до­го иг­ро­ка есть не­огра­ни­чен­ное ко­ли­че­ство кам­ней.

Игра за­вер­ша­ет­ся в тот мо­мент, когда сум­мар­ное ко­ли­че­ство кам­ней в кучах ста­но­вит­ся не менее 77. По­бе­ди­те­лем счи­та­ет­ся игрок, сде­лав­ший по­след­ний ход, т. е. пер­вым по­лу­чив­ший такую по­зи­цию, что в кучах всего будет 77 или боль­ше кам­ней.

Будем го­во­рить, что игрок имеет вы­иг­рыш­ную стра­те­гию, если он может вы­иг­рать при любых ходах про­тив­ни­ка. Опи­сать стра­те­гию иг­ро­ка – зна­чит, опи­сать, какой ход он дол­жен сде­лать в любой си­ту­а­ции, ко­то­рая ему может встре­тить­ся при раз­лич­ной игре про­тив­ни­ка. На­при­мер, при на­чаль­ных по­зи­ци­ях (6, 36), (7, 35), (9, 34) вы­иг­рыш­ная стра­те­гия есть у Пети. Чтобы вы­иг­рать, ему до­ста­точ­но удво­ить ко­ли­че­ство кам­ней во вто­рой куче.

 

      За­да­ние 1. Для каж­дой из на­чаль­ных по­зи­ций (6, 35), (8, 34) ука­жи­те, кто из иг­ро­ков имеет вы­иг­рыш­ную стра­те­гию. В каж­дом слу­чае опи­ши­те вы­иг­рыш­ную стра­те­гию; объ­яс­ни­те, по­че­му эта стра­те­гия ведёт

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

 

      За­да­ние 2. Для каж­дой из на­чаль­ных по­зи­ций (6, 34), (7, 34), (8, 33) ука­жи­те, кто из иг­ро­ков имеет вы­иг­рыш­ную стра­те­гию. В каж­дом слу­чае опи­ши­те вы­иг­рыш­ную стра­те­гию; объ­яс­ни­те, по­че­му эта стра­те­гия ведёт к вы­иг­ры­шу, и ука­жи­те, какое наи­боль­шее ко­ли­че­ство ходов может по­тре­бо­вать­ся по­бе­ди­те­лю для вы­иг­ры­ша при этой стра­те­гии.

 

      За­да­ние 3. Для на­чаль­ной по­зи­ции (7, 33) ука­жи­те, кто из иг­ро­ков имеет вы­иг­рыш­ную стра­те­гию. Опи­ши­те вы­иг­рыш­ную стра­те­гию; объ­яс­ни­те, по­че­му эта стра­те­гия ведёт к вы­иг­ры­шу, и ука­жи­те, какое наи­боль­шее ко­ли­че­ство ходов может по­тре­бо­вать­ся по­бе­ди­те­лю для вы­иг­ры­ша при этой стра­те­гии. По­строй­те де­ре­во всех пар­тий, воз­мож­ных при ука­зан­ной Вами вы­иг­рыш­ной стра­те­гии. Пред­ставь­те де­ре­во в виде ри­сун­ка или таб­ли­цы.


Решения заданий с развернутым ответом не проверяются автоматически. Запишите решение на бумаге.
На следующей странице вам будет предложено проверить их самостоятельно.

4
Тип Д27 C4 № 12443
i

В фи­зи­че­ской ла­бо­ра­то­рии про­во­дит­ся дол­го­вре­мен­ный экс­пе­ри­мент по изу­че­нию гра­ви­та­ци­он­но­го поля Земли. По ка­на­лу связи каж­дую ми­ну­ту в ла­бо­ра­то­рию пе­ре­даётся по­ло­жи­тель­ное целое число  — те­ку­щее по­ка­за­ние при­бо­ра «Сигма 2015». Ко­ли­че­ство пе­ре­да­ва­е­мых чисел в серии из­вест­но и не пре­вы­ша­ет 10 000. Все числа не пре­вы­ша­ют 1000. Вре­ме­нем, в те­че­ние ко­то­ро­го про­ис­хо­дит пе­ре­да­ча, можно пре­не­бречь.

Не­об­хо­ди­мо вы­чис­лить «бета-зна­че­ние» серии по­ка­за­ний при­бо­ра  — ми­ни­маль­ное чётное про­из­ве­де­ние двух по­ка­за­ний, между мо­мен­та­ми пе­ре­да­чи ко­то­рых про­шло не менее 7 минут. Если по­лу­чить такое про­из­ве­де­ние не удаётся, ответ счи­та­ет­ся рав­ным –1.

Вам пред­ла­га­ет­ся два за­да­ния, свя­зан­ных с этой за­да­чей: за­да­ние А и за­да­ние Б. Вы мо­же­те ре­шать оба за­да­ния или одно из них по сво­е­му вы­бо­ру.

Ито­го­вая оцен­ка вы­став­ля­ет­ся как мак­си­маль­ная из оце­нок за за­да­ния А и Б. Если ре­ше­ние од­но­го из за­да­ний не пред­став­ле­но, то счи­та­ет­ся, что оцен­ка за это за­да­ние  — 0 бал­лов.

За­да­ние Б яв­ля­ет­ся усложнённым ва­ри­ан­том за­да­ния А, оно со­дер­жит до­пол­ни­тель­ные тре­бо­ва­ния к про­грам­ме.

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

Мак­си­маль­ная оцен­ка за вы­пол­не­ние за­да­ния А  — 2 балла.

Б. На­пи­ши­те про­грам­му для ре­ше­ния по­став­лен­ной за­да­чи, ко­то­рая будет эф­фек­тив­на как по вре­ме­ни, так и по па­мя­ти (или хотя бы по одной из этих ха­рак­те­ри­стик).

Про­грам­ма счи­та­ет­ся эф­фек­тив­ной по вре­ме­ни, если время ра­бо­ты про­грам­мы про­пор­ци­о­наль­но ко­ли­че­ству по­лу­чен­ных по­ка­за­ний при­бо­ра N, т. е. при уве­ли­че­нии N в k раз время ра­бо­ты про­грам­мы долж­но уве­ли­чи­вать­ся не более чем в k раз.

Про­грам­ма счи­та­ет­ся эф­фек­тив­ной по па­мя­ти, если раз­мер па­мя­ти, ис­поль­зо­ван­ной в про­грам­ме для хра­не­ния дан­ных, не за­ви­сит от числа N и не пре­вы­ша­ет 1 ки­ло­бай­та.

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

Мак­си­маль­ная оцен­ка за пра­виль­ную про­грам­му, эф­фек­тив­ную по вре­ме­ни и по па­мя­ти,  — 4 балла.

Мак­си­маль­ная оцен­ка за пра­виль­ную про­грам­му, эф­фек­тив­ную по вре­ме­ни, но не­эф­фек­тив­ную по па­мя­ти,  — 3 балла.

На­по­ми­на­ем! Не за­будь­те ука­зать, к ка­ко­му за­да­нию от­но­сит­ся каж­дая из пред­став­лен­ных Вами про­грамм.

Вход­ные дан­ные пред­став­ле­ны сле­ду­ю­щим об­ра­зом. В пер­вой стро­ке задаётся число N – общее ко­ли­че­ство по­ка­за­ний при­бо­ра. Га­ран­ти­ру­ет­ся, что N > 7. В каж­дой из сле­ду­ю­щих N строк задаётся одно по­ло­жи­тель­ное целое число  — оче­ред­ное по­ка­за­ние при­бо­ра.

При­мер вход­ных дан­ных:

12

12

45

5

3

14

17

23

21

20

19

18

17

Про­грам­ма долж­на вы­ве­сти одно число  — опи­сан­ное в усло­вии про­из­ве­де­ние, либо –1, если по­лу­чить такое про­из­ве­де­ние не удаётся.

При­мер вы­ход­ных дан­ных для при­ведённого выше при­ме­ра вход­ных дан­ных: 54


Решения заданий с развернутым ответом не проверяются автоматически. Запишите решение на бумаге.
На следующей странице вам будет предложено проверить их самостоятельно.
Завершить работу, свериться с ответами, увидеть решения.