Алена
.pdfnginx/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