Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Алена

.pdf
Скачиваний:
6
Добавлен:
01.03.2016
Размер:
159.4 Кб
Скачать

nginx/1.2.1

29. C 1 № 3601. Требовалось написат ь программу, кот орая вводит с клавиат уры координат ы т очки

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

ПАСКАЛЬ

 

БЕЙСИК

 

 

 

var х, у: real;

INPUT x, y

 

IF у <= 2 * x * x

begin

 

THEN

readln(х, у) ;

 

IF x >= -1 THEN

if у <= 2 * х * х

 

 

IF у >= 1 THEN

then

 

 

PRINT "принадле-

if х >= −1 then

 

жит"

if у >= 1 then

 

ELSE

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

 

 

PRINT "не принад-

')

 

лежит"

else

 

ENDIF

write('не принадле-

 

 

ENDIF

жит')

 

 

ENDIF

end.

 

 

END

 

 

 

 

 

СИ

 

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

 

язык

 

 

 

 

алг

 

 

нач

void main (void)

 

вещ х, у

 

ввод х, у

{ float x, y;

 

 

если у <= 2 * х * х

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

if (y <= 2 * x * x)

 

то

 

если х >= -1 то

if (x >= -1)

 

 

если у >= 1 то

if (У >= 1)

 

 

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

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

иначе

else

 

вывод 'не принадле-

printf("не принадле-

 

 

жит'

жит");

 

 

все

}

 

 

все

 

 

 

 

все

 

 

кон

 

 

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

1. Перерисуйт е и заполнит е т аблицу, кот о­ рая показывает , как работ ает программа при аргумент ах, принадлежащих различным обла­ ст ям (A, B, C, D, E, F, G и H).

Точки, лежащие на границах област ей, от дельно не рассмат риват ь. В ст олбцах условий укажит е "да", если условие выполнит ся, "нет ", если условие не выполнит ся, "—" (прочерк), если

условие не будет

проверят ься, "не изв.", если

программа ведет

себя по-разному для разных

значений,

принадлежащих данной област и. В

ст олбце

"Программа выведет " укажит е, чт о

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

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

Област ь

Условие 1

Условие 2

Условие 3

Программа выведет

Област ь обрабат ывает ся верно

 

(у <= 2 * х * х)

(x >= −1)

(у >= 1)

 

 

A

 

 

 

 

 

 

 

 

 

 

 

В

 

 

 

 

 

 

 

 

 

 

 

С

 

 

 

 

 

 

 

 

 

 

 

D

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

503 Service Temporarily Unavailable

Е

nginx/1.2.1

 

F

G

Н

30. C 2 № 3610. Дан целочисленный массив из 30 элемент ов. Элемент ы массива могут принимат ь произвольные значения. С клавиат уры вводит ся целое число X. Опишит е на русском языке или на одном из языков программирования алгорит м, кот орый находит и выводит наименьший номер эле мент а массива, равного X, или сообщение, чт о т акого элемент а нет .

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

 

 

ПАСКАЛЬ

БЕЙСИК

 

 

 

 

 

 

 

 

const

N = 30

 

 

 

N = 30;

 

 

var

DIM A (N) AS INTEGER

 

 

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

DIM I, J, X AS INTEGER

 

 

i, j, x: integer;

FOR I = 1 TO N

 

 

begin

INPUT A (I)

 

 

for i := 1 to N do

NEXT I

 

 

readln(a[i]);

INPUT X

 

 

readln(x);

...

 

 

 

...

END

 

 

end.

 

 

 

 

 

СИ

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

 

 

 

 

 

 

 

 

 

 

#include

алг

 

 

 

 

нач

 

 

 

 

#define N 30

цел N = 30

 

 

 

 

void main(void)

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

 

 

 

 

{int a[N];

цел i, j, х

 

 

 

 

int i, j, x;

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

 

 

 

 

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

ввод a [i]

 

 

 

 

scanf (H%d'\ & a [ i ] ) ;

кц

 

 

 

 

scanf{"%d", &x);

ввод X

 

 

 

 

}

...

 

 

 

 

 

кон

 

 

Ест ест венный язык

Объявляем массив А из 30 элемент ов. Объявляем целочисленные переменные I, J.

В цикле от 1 до 30 вводим элемент ы массива А с 1-го по 30-й. Вводит переменную X.

...

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

503 Service Temporarily Unavailable

nginx/1.2.1

31. C 3 № 5950. Два игрока, Пет я и Ваня, играют в следующую игру. Перед игроками лежит куча кам

ней. Игроки ходят по очереди, первый ход делает Пет я. За один ход игрок может добавит ь в кучу один или два камня или увеличит ь количест во камней в куче в два раза. Например, имея кучу из 15 камней, за один ход можно получит ь кучу из 16, 17 или 30 камней. У каждого игрока, чт обы делат ь ходы, ест ь неограниченное количест во камней.

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

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

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

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

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

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

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

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

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

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

503 Service Temporarily Unavailable

nginx/1.2.1

32. C 4 № 5535. На ускорит еле для большого числа част иц производят ся замеры скорост и каждой из

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

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

На вход программе в первой ст роке подаёт ся количест во част иц N. В каждой из последующих N ст рок записано одно неот рицат ельное вещест венное число с т очност ью до 1 знака после десят ич­ ной т очки. Пример входных данных:

5

123.4

0.2

7.2

0.0

314 .1

Программа должна вывест и сначала размер основного множест ва, а зат ем -его минимальный элемент .

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

3 7.2

503 Service Temporarily Unavailable