Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1 вариант.docx
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
231 Кб
Скачать
☆

1. При­бавь 1,

2. Умножь на 2.

 

Пер­вая из них уве­ли­чи­ва­ет на 1 число на экра­не, вто­рая удва­и­ва­ет его.

Про­грам­ма для Удво­и­те­ля — это по­сле­до­ва­тель­ность ко­манд. Сколь­ко су­ще­ству­ет про­грамм, ко­то­рые число 3 пре­об­ра­зу­ют в число 26? По­яс­не­ние.

Обо­зна­чим R(n) — ко­ли­че­ство про­грамм, ко­то­рые пре­об­ра­зу­ют число 2 в число n. Обо­зна­чим t(n) наи­боль­шее крат­ное 2, не пре­вос­хо­дя­щее n. За­ме­тим, что мы можем по­лу­чить толь­ко числа, крат­ные 2.

Верны сле­ду­ю­щие со­от­но­ше­ния:

1. Если n не де­лит­ся на 2, то тогда R(n) = R(t(n)), так как су­ще­ству­ет един­ствен­ный спо­соб по­лу­че­ния n из t(n) — при­бав­ле­ни­ем еди­ниц.

2. Пусть n де­лит­ся на 2. Тогда R(n) = R(n / 2) + R(n − 1)= R(n / 2) + R(n − 2) (если n > 4). При n = 4: R(n) = 1 (один спо­соб: при­бав­ле­ни­ем еди­ни­цы), при n = 5: R(n) = 1. До­ста­точ­но вы­чис­лить зна­че­ния R(n) для всех чисел, крат­ных 2 и не пре­вос­хо­дя­щих 26.

Имеем:

R(4)= 1 = R(5),

R(6) = 2 = R(7),

R(8) = R(4) + R(6) = 1 + 2 = 3 = R(9),

R(10) = R(5) + R(8) = 1 + 3 = 4 = R(11),

R(12) = R(6) + R(10) = 2 + 4 = 6 = R(13),

R(14) = R(7) + R(12) = 2 + 6 = 8 = R(15),

R(16) = R(8) + R(14) = 3 + 8 = 11 = R(17),

R(18) = R(9) + R(16) = 3 + 11 = 14 = R(19),

R(20) = R(10) + R(18) = 4 + 14 = 18 = R(21),

R(22) = R(11) + R(20) = 4 + 18 = 22 = R(23),

R(24) = R(12) + R(22) = 6 + 22 = 28 = R(23),

R(26) = R(13) + R(24) = 6 + 28 = 34.

 

Ответ: 34.

  1. A, B и С – целые числа, для ко­то­рых ис­тин­но вы­ска­зы­ва­ние

¬(А = B) ∧ ((B < A)→(2C > A)) ∧ ((A < B)→(A > 2C))

Чему равно A, если C = 8 и B = 18?.

По­яс­не­ние.

Ло­ги­че­ское "И" ис­тин­но тогда и толь­ко тогда, когда ис­тин­ны оба утвер­жде­ния.

1) ¬(А = B) = 1, то есть А ≠ 18 = 1.

2) ((B < A)→(2C > A)) При­ме­ним пре­об­ра­зо­ва­ние им­пли­ка­ции: (18 > A) ∨ (16 > A) = 1

3) (A < B)→(A > 2C) При­ме­ним пре­об­ра­зо­ва­ние им­пли­ка­ции: (A > 18) ∨ (A > 16) = 1

 

Из 2) и 3) сле­ду­ет, что (18 > A) и (A > 16), так как в про­тив­ном слу­чае воз­ни­ка­ет про­ти­во­ре­чие А = 17

Критерии оце­ни­ва­ния выполнения задания

Баллы

Выполнены все три дей­ствия

3

Правильно вы­пол­не­ны два дей­ствия из трёх. При этом при на­пи­са­нии опе­ра­ций срав­не­ния до­пус­ка­ет­ся одно не­пра­виль­ное ис­поль­зо­ва­ние строгих/нестрогих не­ра­венств (считается не­су­ще­ствен­ной ошибкой, по­греш­но­стью записи). Например, вме­сто «y>=x» один раз ис­поль­зу­ет­ся «y>x». В ра­бо­те (во фраг­мен­тах программ) до­пус­ка­ет­ся на­ли­чие от­дель­ных син­так­си­че­ских ошибок, не ис­ка­жа­ю­щих за­мыс­ла ав­то­ра ре­ше­ния

2

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

1

Ни один из пунк­тов за­да­ния не выполнен, то есть не вы­пол­не­ны критерии, поз­во­ля­ю­щие по­ста­вить уче­ни­ку 1 балл

0

Максимальный балл

3

Тре­бо­ва­лось на­пи­сать про­грам­му, ко­то­рая вво­дит с кла­ви­а­ту­ры ко­ор­ди­на­ты точки на плос­ко­сти (x, y — дей­стви­тель­ные числа) и опре­де­ля­ет при­над­леж­ность точки за­штри­хо­ван­ной об­ла­сти (вклю­чая гра­ни­цы). Про­грам­мист то­ро­пил­ся и на­пи­сал про­грам­му не­пра­виль­но. Ниже для Ва­ше­го удоб­ства про­грам­ма пред­став­ле­на на четырёх язы­ках про­грам­ми­ро­ва­ния.

 

Бей­сик

Пас­каль

INPUT x, y

IF x>=-1 THEN

IF y>=-1 THEN

IF y<=1 THEN

IF x*x+y*y<=1 THEN

PRINT "при­над­ле­жит"

ELSE

PRINT "не при­над­ле­жит"

END IF

END IF

END IF

END IF

END

var x,y: real;

begin

readln(x,y);

if x>=-1 then

if y>=-1 then

if y<=1 then

if x*x+y*y<=1 then

write('при­над­ле­жит')

else

write('не при­над­ле­жит');

end

Си

Ал­го­рит­ми­че­ский

#include<stdio.h>

void main()

{

float x,y;

scanf("%f%f",&x,&y);

if (x>=-1)

if (y>=-1)

if (y<=1)

if (x*x+y*y<=1)

printf("при­над­ле­жит");

else

printf("не при­над­ле­жит");

}

алг

нач

вещ x,y

ввод x,y

если x>=-1 то

если y>=-1 то

если y<=1 то

если x*x+y*y<=1 то

вывод 'при­над­ле­жит'

иначе

вывод 'не при­над­ле­жит'

все

все

все

все

кон

 

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

 

1. Пе­ре­ри­суй­те и за­пол­ни­те таб­ли­цу, ко­то­рая по­ка­зы­ва­ет, как ра­бо­та­ет про­грам­ма при ар­гу­мен­тах, при­над­ле­жа­щих раз­лич­ным об­ла­стям (A, B, C, D, E, F, G, H, I). Точки, ле­жа­щие на гра­ни­цах об­ла­стей, от­дель­но не рас­смат­ри­вать. Ко­ор­ди­нат­ные оси не яв­ля­ют­ся гра­ни­ца­ми об­ла­стей. В столб­цах усло­вий ука­жи­те «да», если усло­вие вы­пол­нит­ся, «нет», если усло­вие не вы­пол­нит­ся, «—» (про­черк), если усло­вие не будет про­ве­рять­ся, «не изв.», если про­грам­ма ведёт себя по-раз­но­му для раз­ных зна­че­ний, при­над­ле­жа­щих дан­ной об­ла­сти. В столб­це «Про­грам­ма вы­ве­дет» ука­жи­те, что про­грам­ма вы­ве­дет на экран. Если про­грам­ма ни­че­го не вы­во­дит, на­пи­ши­те «—» (про­черк). Если для раз­ных зна­че­ний, при­над­ле­жа­щих об­ла­сти, будут вы­ве­де­ны раз­ные тек­сты, на­пи­ши­те «не изв.». В по­след­нем столб­це ука­жи­те «да» или «нет».

 

Об­ласть

Усло­вие1 (x>=–1)

Усло­вие 2 (y>=–1)

Усло­вие 3

(y<=1)

Усло­вие 4 (x*x+y*y<=1)

Про­грам­ма

вы­ве­дет

Об­ласть

об­ра­ба­ты­ва­ет­ся верно

A

В

С

D

Е

F

G

Н

I

 

2. Ука­жи­те, как нужно до­ра­бо­тать про­грам­му, чтобы не было слу­ча­ев её не­пра­виль­ной ра­бо­ты. (Это можно сде­лать не­сколь­ки­ми спо­со­ба­ми, до­ста­точ­но ука­зать любой спо­соб до­ра­бот­ки ис­ход­ной про­грам­мы.)

Пояснение.

Эле­мен­ты от­ве­та:

 

Об­ласть

Усло­вие1 (x>=–1)

Усло­вие 2 (y>=–1)

Усло­вие 3

(y<=1)

Усло­вие 4 (x*x+y*y<=1)

Про­грам­ма

вы­ве­дет

Об­ласть

об­ра­ба­ты­ва­ет­ся

верно

A

нет

—

—

—

—

нет

B

да

да

нет

—

—

нет

C

нет

—

—

—

—

нет

D

да

да

да

нет

не при­над­ле­жит

нет

E

да

да

да

да

при­над­ле­жит

да

F

да

да

да

нет

не при­над­ле­жит

да

G

да

да

да

нет

не при­над­ле­жит

нет

H

нет

—

—

—

—

нет

I

да

нет

—

—

—

нет

 

Воз­мож­ная до­ра­бот­ка (Пас­каль, от­дель­но рас­смат­ри­ва­ем об­ла­сти, ле­жа­щие по раз­ные сто­ро­ны от пря­мой x=0):

 

if (x*x+y*y<=1) and (x>=0) or (x<=0) and (x>=-1) and (y<=1) and (y>=-1) then

write('при­над­ле­жит')

else write('не при­над­ле­жит')

 

Воз­мож­ная до­ра­бот­ка (Си, объ­еди­не­ние двух пе­ре­се­ка­ю­щих­ся об­ла­стей):

 

if((x*x+y*y<=1) || (x>=-1) && (x<=0) && (fabs(y)<=1))

printf("при­над­ле­жит");

else

printf("не при­над­ле­жит");

 

Об­ра­ти­те вни­ма­ние! При раз­де­ле­нии об­ла­сти вдоль какой-либо линии точки, ко­то­рые лежат на этой линии внут­ри об­ла­сти, могут быть при­чис­ле­ны к одной части, к дру­гой или к обеим (то есть, на­при­мер, в при­ведённом ре­ше­нии на языке Пас­каль одно из усло­вий (x>=0 или x<=0) может быть стро­гим) Могут быть и дру­гие вер­ные спо­со­бы до­ра­бот­ки.

Критерии оце­ни­ва­ния вы­пол­не­ния задания

Баллы

Предложен пра­виль­ный алгоритм, вы­да­ю­щий вер­ное значение. До­пус­ка­ет­ся за­пись ал­го­рит­ма на дру­гом языке, ис­поль­зу­ю­щая ана­ло­гич­ные переменные. В случае, если язык про­грам­ми­ро­ва­ния ис­поль­зу­ет ти­пи­зи­ро­ван­ные переменные, опи­са­ния пе­ре­мен­ных долж­ны быть ана­ло­гич­ны опи­са­ни­ям пе­ре­мен­ных на есте­ствен­ном языке. Ис­поль­зо­ва­ние не­ти­пи­зи­ро­ван­ных или не­объ­яв­лен­ных пе­ре­мен­ных воз­мож­но толь­ко в случае, если это до­пус­ка­ет­ся язы­ком программирования, при этом ко­ли­че­ство пе­ре­мен­ных и их иден­ти­фи­ка­то­ры долж­ны со­от­вет­ство­вать усло­вию задачи. В алгоритме, за­пи­сан­ном на языке программирования, до­пус­ка­ет­ся на­ли­чие от­дель­ных син­так­си­че­ских ошибок, не ис­ка­жа­ю­щих за­мыс­ла ав­то­ра программы.

2

В любом ва­ри­ан­те ре­ше­ния может при­сут­ство­вать не более одной ошиб­ки из числа следующих: 1) не ини­ци­а­ли­зи­ру­ет­ся или не­вер­но ини­ци­а­ли­зи­ру­ет­ся пе­ре­мен­ная; 2) при вы­во­де от­ве­та не учитывается, что тре­бу­е­мо­го числа в мас­си­ве может не быть; 3) от­сут­ству­ет вывод от­ве­та; 4) в срав­не­нии перепутан знак; 5) не­вер­но осу­ществ­ля­ет­ся про­вер­ка де­ли­мо­сти; 6) на де­ли­мость про­ве­ря­ет­ся не зна­че­ние элемента, а его индекс; 7) в слож­ном усло­вии вме­сто ло­ги­че­ской опе­ра­ции «И» ис­поль­зу­ет­ся ло­ги­че­ская опе­ра­ция «ИЛИ»; 8) ис­поль­зу­ет­ся переменная, не объ­яв­лен­ная в раз­де­ле опи­са­ния переменных; 9) не ука­за­но или не­вер­но ука­за­но усло­вие за­вер­ше­ния цикла; 10) ин­декс­ная пе­ре­мен­ная в цикле не ме­ня­ет­ся (например, в цикле while) или ме­ня­ет­ся неверно; 11) не­вер­но рас­став­ле­ны опе­ра­тор­ные скобки

1

Ошибок, пе­ре­чис­лен­ных в п. 1–11, две или больше, или ал­го­ритм сфор­му­ли­ро­ван не­вер­но

0

Максимальный балл

2

На пу­стой шах­мат­ной доске в одной из кле­ток стоит шах­мат­ный конь. Опи­ши­те на рус­ском языке или на одном из язы­ков про­грам­ми­ро­ва­ния ал­го­ритм по­лу­че­ния спис­ка кле­ток, ко­то­рые конь может до­стичь за один ход из дан­ной клет­ки. На вход про­грам­мы по­сту­па­ют два целых числа: х, у (1 < х,у < 8) — ко­ор­ди­на­ты клет­ки, в ко­то­рой стоит конь. На вы­хо­де про­грам­мы дол­жен быть вы­ве­ден спи­сок пар целых чисел — ко­ор­ди­на­ты кле­ток, до­сти­жи­мых конём из ис­ход­ной клет­ки за один ход.

Пояснение.

За­ме­тим, что раз­ность со­от­вет­ству­ю­щих ко­ор­ди­нат кле­ток со­единённых ходом коня, равна 1 и 2 по мо­ду­лю. Можно ис­поль­зо­вать дан­ный кри­те­рий при пе­ре­бо­ре кле­ток доски. При­мер про­грам­мы на языке Пас­каль:

var i, j, x, y, d1, d2 : integer;

begin

readln(x, y);

for i := 1 to 8 do

for j := 1 to 8 do

begin

d1 := abs(i-x);

d2 := abs(j-y);

if ((d1=1) and (d2=2)) or ((d1=2) and (d2=1)) then writeln(i, ' ', j);

end;

end.

Критерии оце­ни­ва­ния вы­пол­не­ния задания

Баллы

Не вы­пол­не­но ни одно из условий, поз­во­ля­ю­щих по­ста­вить 3, 2 или 1 балл.

0

Не вы­пол­не­ны условия, поз­во­ля­ю­щие по­ста­вить 3 или 2 балла, и вы­пол­не­но одно из сле­ду­ю­щих условий. 1. Пер­вое за­да­ние вы­пол­не­но полностью. 2. Во вто­ром за­да­нии пра­виль­но ука­за­но одно из двух воз­мож­ных зна­че­ний S и для этого зна­че­ния ука­за­на и обос­но­ва­на вы­иг­рыш­ная стра­те­гия Пети. 3. Пер­вое за­да­ние вы­пол­не­но частично, и для од­но­го из осталь­ных за­да­ний пра­виль­но ука­за­но зна­че­ние S. 4. Для вто­ро­го и тре­тье­го за­да­ния пра­виль­но ука­за­ны зна­че­ния S.

1

Не вы­пол­не­ны условия, поз­во­ля­ю­щие по­ста­вить 3 балла, и вы­пол­не­но одно из сле­ду­ю­щих условий. 1. За­да­ние 3 вы­пол­не­но полностью. 2. Пер­вое и вто­рое за­да­ния вы­пол­не­ны полностью. 3. Пер­вое за­да­ние вы­пол­не­но пол­но­стью или частично; для за­да­ний 2 и 3 ука­за­ны пра­виль­ные зна­че­ния S.

2

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

3

Максимальный балл

3

Два иг­ро­ка, Петя и Ваня, иг­ра­ют в сле­ду­ю­щую игру. Перед иг­ро­ка­ми лежит куча кам­ней. Иг­ро­ки ходят по оче­ре­ди, пер­вый ход де­ла­ет Петя. За один ход игрок может:

        до­ба­вить в кучу один ка­мень (дей­ствие А) или

        утро­ить ко­ли­че­ство кам­ней в куче, а затем убрать из кучи 2 камня (дей­ствие Б).

На­при­мер, имея кучу из 10 кам­ней, за один ход можно по­лу­чить кучу из 11 или 28 кам­ней. У каж­до­го иг­ро­ка, чтобы де­лать ходы, есть не­огра­ни­чен­ное ко­ли­че­ство кам­ней.

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

В на­чаль­ный мо­мент в куче было S кам­ней, 2 ≤ S ≤ 30.

 

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

 

Вы­пол­ни­те сле­ду­ю­щие за­да­ния. Во всех слу­ча­ях обос­но­вы­вай­те свой ответ.

1.

        а) При каких зна­че­ни­ях числа S Петя может вы­иг­рать пер­вым ходом? Ука­жи­те все такие зна­че­ния и вы­иг­ры­ва­ю­щий ход Пети.

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

2. Ука­жи­те два зна­че­ния S, при ко­то­рых у Пети есть вы­иг­рыш­ная стра­те­гия, причём (а) Петя не может вы­иг­рать пер­вым ходом, но (б) Петя может вы­иг­рать своим вто­рым ходом, не­за­ви­си­мо от того, как будет хо­дить Ваня.

Для ука­зан­ных зна­че­ний S опи­ши­те вы­иг­рыш­ную стра­те­гию Пети.

3. Ука­жи­те такое зна­че­ние S, при ко­то­ром

        – у Вани есть вы­иг­рыш­ная стра­те­гия, поз­во­ля­ю­щая ему вы­иг­рать пер­вым или вто­рым ходом при любой игре Пети, и при этом

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

Для ука­зан­но­го зна­че­ния S опи­ши­те вы­иг­рыш­ную стра­те­гию Вани.

По­строй­те де­ре­во всех пар­тий, воз­мож­ных при этой вы­иг­рыш­ной стра­те­гии Вани (в виде ри­сун­ка или таб­ли­цы). На реб­рах де­ре­ва ука­зы­вай­те, кто де­ла­ет ход, в узлах – ко­ли­че­ство кам­ней в по­зи­ции.

Пояснение.

1. а) Петя может вы­иг­рать, если S =11, …, 30. При мень­ших зна­че­ни­ях S за один ход нель­зя по­лу­чить кучу, в ко­то­рой не менее 31 камня. Пете до­ста­точ­но уве­ли­чить ко­ли­че­ство кам­ней в 3 раза и от­нять два камня (дей­ствие Б).

б) Ваня может вы­иг­рать пер­вым ходом (как бы ни играл Петя), если ис­ход­но в куче будет S = 10 кам­ней. Тогда после пер­во­го хода Пети в куче будет 11 кам­ней или 28 кам­ней. В обоих слу­ча­ях Ваня вы­пол­ня­ет дей­ствие Б и вы­иг­ры­ва­ет в один ход.

2. Воз­мож­ные зна­че­ния S: 4, 9. В этих слу­ча­ях Петя, оче­вид­но, не может вы­иг­рать пер­вым ходом. Од­на­ко он может по­лу­чить кучу из 10 кам­ней (при S = 4 он вы­пол­ня­ет дей­ствие Б; при S = 9 – до­бав­ля­ет 1 ка­мень т. к. вы­пол­ня­ет дей­ствие А). Эта по­зи­ция разо­бра­на в п. 1 б. В ней игрок, ко­то­рый будет хо­дить (те­перь это Ваня), вы­иг­рать не может, а его про­тив­ник (то есть Петя) сле­ду­ю­щим ходом вы­иг­ра­ет.

3. Воз­мож­ное зна­че­ние S: 8. После пер­во­го хода Пети в куче будет 9 кам­ней или 22 камня. Если в куче ста­нет 22 камня, Ваня вы­пол­нит дей­ствие Б и вы­иг­ра­ет своим пер­вым ходом. Си­ту­а­ция, когда в куче 9 кам­ней, разо­бра­на

в п. 2. В этой си­ту­а­ции игрок, ко­то­рый будет хо­дить (те­перь это Ваня), вы­иг­ры­ва­ет своим вто­рым ходом.

В таб­ли­це изоб­ра­же­но де­ре­во воз­мож­ных пар­тий при опи­сан­ной стра­те­гии Вани. За­клю­чи­тель­ные по­зи­ции (в них вы­иг­ры­ва­ет Ваня) подчёрк­ну­ты. На ри­сун­ке это же де­ре­во изоб­ра­же­но в гра­фи­че­ском виде (оба спо­со­ба изоб­ра­же­ния де­ре­ва до­пу­сти­мы).

 

По­ло­же­ния после оче­ред­ных ходов

Исх.

полож.

1‐й ход Пети

(разо­бра­ны все

ходы)

1‐й ход

Вани

(толь­ко

ход по

стра­те­гии)

2‐й ход Пети

(разо­бра­ны все

ходы)

2‐й ход Вани

(толь­ко ход по

стра­те­гии)

8

8+1 =9

9+1=10

10+1=11

3*11–2=31

3*10–2=28

3*28–2=82

3*8–2=22

3*22–2=64

 

Критерии оце­ни­ва­ния вы­пол­не­ния задания

Баллы

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

4

Программа ра­бо­та­ет верно, но вход­ные дан­ные за­по­ми­на­ют­ся в массиве, раз­мер ко­то­ро­го со­от­вет­ству­ет числу N. Этот массив, возможно, потом сортируется. До­пус­ка­ет­ся на­ли­чие от одной до трех син­так­си­че­ских ошибок. Возможно, в прин­ци­пи­аль­но верно ор­га­ни­зо­ван­ном вводе дан­ных есть одна ошиб­ка (например, ис­поль­зо­ва­ние read вме­сто readln в Пас­ка­ле или не­вер­ное счи­ты­ва­ние стро­ки в C++). Три балла также выставляется, если в эф­фек­тив­ной программе, удо­вле­тво­ря­ю­щей кри­те­ри­ям вы­став­ле­ния 4 баллов, есть одна ошибка, в ре­зуль­та­те ко­то­рой про­грам­ма ра­бо­та­ет не­вер­но на не­ко­то­рых на­бо­рах не­ти­пич­ных вход­ных данных.

3

Программа ра­бо­та­ет в целом верно, эф­фек­тив­но или нет, но в ре­а­ли­за­ции ал­го­рит­ма со­дер­жит­ся до двух оши­бок (неверная ини­ци­а­ли­за­ция счётчиков, до­пу­ще­на ошиб­ка в прин­ци­пи­аль­но верно ор­га­ни­зо­ван­ной сор­ти­ров­ке или ал­го­рит­ме по­ис­ка ми­ни­маль­ных элементов, ис­поль­зу­ет­ся знак “<” вме­сто “<=”, “or” вме­сто “and” и тому подобное). Возможно, не­кор­рект­но ор­га­ни­зо­ва­но счи­ты­ва­ние вход­ных данных. До­пус­ка­ет­ся на­ли­чие от одной до пяти син­так­си­че­ских ошибок, опи­сан­ных выше

2

Программа, возможно, не­вер­но ра­бо­та­ет при не­ко­то­рых вход­ных данных, но по приведённому тек­сту ре­ше­ния ясно, что эк­за­ме­ну­е­мый понимает, из каких эта­пов долж­но со­сто­ять ре­ше­ние задачи. При ис­поль­зо­ва­нии сор­ти­ров­ки она может быть ре­а­ли­зо­ва­на прин­ци­пи­аль­но не­вер­но (например, вме­сто двух цик­лов ис­поль­зу­ет­ся один), или до­пу­ще­на прин­ци­пи­аль­ная ошиб­ка в по­ис­ке нуж­ных элементов. Всего до­пус­ка­ет­ся до 4 раз­лич­ных оши­бок в ре­а­ли­за­ции алгоритма, в том числе опи­сан­ных в кри­те­ри­ях при­сво­е­ния двух баллов. До­пус­ка­ет­ся на­ли­чие от одной до семи син­так­си­че­ских ошибок, опи­сан­ных выше.

1

Задание не вы­пол­не­но или вы­пол­не­но неверно.

0

Максимальный балл

4

На вход про­грам­ме по­да­ют­ся све­де­ния о но­ме­рах школ уча­щих­ся, участ­во­вав­ших в олим­пиа­де. В пер­вой стро­ке со­об­ща­ет­ся ко­ли­че­ство уча­щих­ся N, каж­дая из сле­ду­ю­щих N строк имеет сле­ду­ю­щий фор­мат: <Фа­ми­лия> <Ини­ци­а­лы> <номер школы>, где <Фа­ми­лия> - стро­ка, со­сто­я­щая не более чем из 20 сим­во­лов, <Ини­ци­а­лы> - стро­ка, со­сто­я­щая из 4-х сим­во­лов (буква, точка, буква, точка), <номер школы> - не более чем дву­знач­ный номер. <Фа­ми­лия> и <Ини­ци­а­лы>, а также <Ини­ци­а­лы> и <номер школы> раз­де­ле­ны одним про­бе­лом. При­мер вход­ной стро­ки:

Ива­нов П.С. 57

 

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

Пояснение.

var nс:аrrау[1..99] of integer;

р:1..99;

с: char;

i, N, max: integer;

begin

readln(N);

for i:=l to 99 do nc[i]:=0;

for i:=l to N do

begin

  repeat

     read(c)

  until с='  ';

  repeat

    read(c)

  until с='  ';

readln(p);

nc[p]:=nc[p]+1;

end;

max:=0;

for i:=1 to 99 do

if nc[i]>0 then 

   if nc[i]>max then max:=nc[i];

for i:=l to 99 do

   if nc[i]=max then writeln(i);

readln

end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]