Вы отправили работу на проверку эксперту. Укажите номер телефона на него придет СМС
Скачать .pdf

Вариант 6

Часть 1.

Ответами к заданиям 1–23 являются число или последовательность цифр. Запишите ответ справа от номера задания без пробелов, запятых и других дополнительных символов.

1
1

Дано N = 101001112, М = А916. Найдите целое значение числа К, которое отвечает условию N < К < М. Ответ запишите в десятичной системе счисления.

2
2

Между населёнными пунктами А, В, С, D, Е, F построены дороги, протяжённость которых в километрах приведена в таблице. (Отсутствие числа в таблице означает, что прямой дороги между пунктами нет.)

ABCDEF
A54
B22
C2255
D524
E454
F25

Определите длину кратчайшего пути между пунктами А и F (при условии, что пере двигаться можно только по построенным дорогам). В ответе укажите только число.

3
3

Дан фрагмент таблицы истинности выражения F.

x1x2x3x4x5x6x7x8F
111111110
100001010
011110100

Каким выражением может быть F?

1) ¬(¬x1 ∧ x2 ∧ x3 ∧ x4 ∧ ¬x5 ∧ ¬x6 ∧ x7 ∧ ¬x8)

2) ¬(¬x1 ∧ x2 ∧ x3 ∧ x4 ∧ x5 ∧ ¬x6 ∧ x7 ∧ ¬x8)

3) ¬(x1 v x2 v x3 v ¬x4 v ¬x5 v ¬x6 v x7 v x8)

4) ¬(¬x1 v x2 v x3 v x4 v x5 v ¬x6 v x7 v ¬x8)

4
4

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

Таблица 1
IDФамилия_И.О.Пол
78Соловьев А.П.М
67Ким О.Л.М
14Волк Е.Г.Ж
56Давыдюк Д.Г.М
45Зайцев П.Р.М
15Кашкина Р.Н.Ж
34Потапова К.В.Ж
1Соловьева Н.Г.Ж
23Сергеева К.В.Ж
8Сергеев А.А.М
12Андрейчук А.А.М
9Мишин С.Я.М
100Зейналова Г.Н.Ж
7Сокол П.К.М
Таблица 2
ID_жильцаID_соседа_этажа_сверху
745
834
2334
3478
341
4567
6714
115
19
78100
10012
6756
......
5
5

У исполнителя Прибавлятеля-Умножителя две команды, которым присвоены номера:

1. прибавь 2,

2. умножь на х.

Первая из них увеличивает число на экране на 2, вторая умножает его на х. Программа для исполнителя — это последовательность номеров команд.

Известно, что программа 11212 преобразует число 2 в число 104.

Определите значение х, если известно, что оно целое.

6
6

Дан фрагмент электронной таблицы.

Вариант 6

Какое целое число должно быть записано в ячейке С1, чтобы построенная после выполнения вычислений диаграмма по значениям диапазона ячеек А2:С2 соответствовала рисунку?

Известно, что все значения диапазона, по которым построена диаграмма, имеют один и тот же знак.

7
7

На студии при одноканальной (моно) звукозаписи с 32-битным разрешением за 4 минуты был записан звуковой файл. Сжатие данных не производилось. Известно, что размер файла оказался 15 000 Кбайт. С какой частотой дискретизации (в кГц) велась запись? В качестве ответа укажите только число, единицы измерения указывать не нужно.

8
8

Определите, что будет напечатано в результате работы следующего фрагмента программы

Бейсик

DIM k, s AS INTEGER
s = 0
к = 0
WHILE s < 2000
	s = s + 32
	к = к + 1
WEND
PRINT к

Паскаль

var k, s: integer;
begin
	s : = 0;
	k := 0;
	while s < 2000 do
	begin
		s := s + 32;
		k := k + 1; end;
	write(k); end.

Си

{
	int к, s;
	s = 0;
	к = 0;
	while (s < 2000) {
		s = s + 32;
		к = к + 1;
	}
	printf("%d" , k) ;
}

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

нач
	цел k, s
	s := 0
	k := 0
	нц пока s < 2000
		s := s + 32
		k := k + 1
	кц
вывод k
кон
9
9

Для кодирования некоторой последовательности, состоящей из букв А, Б, В, Г и Д, решили использовать неравномерный двоичный код, позволяющий однозначно декодировать двоичную последовательность, появляющуюся на приёмной стороне канала связи. Использовали код: А — 01; Б — 00; В — 11; Г — 100.

Укажите, каким кодовым словом должна быть закодирована буква Д. Длина этого кодового слова должна быть наименьшей из всех возможных. Код должен удовлетворять свойству однозначного декодирования. Если таких кодов несколько, укажите код с наименьшим числовым значением.

10
10

Сколько существует различных символьных последовательностей длины 5 в трёхбуквенном алфавите {А, В, С}, которые содержат ровно три буквы А?

11
11

Алгоритм вычисления значения функции F(n), где n — натуральное число, задан следующими соотношениями.

F(1) = 1

F(2) = 1

F(n) = F(n - 1) + F(n - 2), при n > 2 Чему равно значение функции F(6)?

В ответе запишите только натуральное число.

12
12

В терминологии сетей TCP/IP маской сети называется двоичное число, определяющее, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу самого узла в этой сети. Обычно маска записывается по тем же правилам, что и IP-адрес, — в виде четырёх байтов, причём каждый байт записывается в виде десятичного числа. При этом в маске сначала (в старших разрядах) стоят единицы, а затем с некоторого места — нули. Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске.

Например, если IP-адрес узла равен 131.111.255.131, а маска равна 255.255.192.0, то адрес подсети равен 131.111.192.0.

Для узла с IP-адресом 136.206.24.314 адрес сети равен 136.204.0.0. Чему равен второй слева байт маски? Ответ запишите в виде десятичного числа.

13
13

Для регистрации на сайте некоторой страны пользователю требуется придумать пароль. Длина пароля — ровно 13 символов. В качестве символов используются десятичные цифры и 14 различных букв местного алфавита, причём все буквы используются в двух начертаниях: как строчные, так и прописные (регистр буквы имеет значение!).

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

Определите объём памяти (в байтах), который занимает хранение 15 паролей. В ответе укажите только число.

14
14

Ниже приведён фрагмент программы, записанный на разных языках программирования. При каком наименьшем введённом числе а после выполнения программы значение переменной с будет равно 45?

Бейсик

INPUT а
b = - 15
а = b - 3 * а
IF а * b < 0 THEN
	с = b + 4
ELSE
	с = - 3 * b
END IF

Паскаль

readln(a);
b := -15;
a := b - 3 * a;
if a * b < 0 then
	c : = b + 4
else
	c := - 3 * b;

Си

scanf("%d", &а);
b = - 15;
а = b - 3 * а;
if (а * b < 0)
	с = b + 4;
else
	с = - 3 * b;

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

ввод a
b := - 15
a : = b - 3 * a
если a * b < 0
	то c := b + 4
	иначе c := - 3 * b
все
15
15

На рисунке — схема дорог, связывающих города А, Б, В, Г, Д, Е, Ж, И, К, М. По каждой дороге можно двигаться только в одном направлении, указанном стрелкой. Сколько существует различных путей, ведущих из города А в город М и не проходящих через город Г?

Вариант 6

16
16

Известно, что для натурального числа х справедливо равенство:

320 x + 1 - 310 x + 2 + 6910 = 0

Определите значение х. Ответ запишите в десятичной системе счисления.

17
17

В языке запросов поискового сервера для обозначения логической операции «ИЛИ» используется символ «|», а для логической операции «И» — символ «&».

ЗапросНайдено страниц (в тыс)
(мода & лето) | (лето & костюм)210
лето220
мода | костюм600

Компьютер печатает количество страниц (в тысячах), которое будет найдено по следующему запросу:

мода | лето | костюм

Укажите целое число, которое напечатает компьютер.

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

18
18

На числовой прямой даны два отрезка: Р = [3, 23] и Q = [27, 38].

Уажите наибольшую возможную длину промежутка А, для которого формула

((x ∈ P) → (x ∈ Q)) v (x ∈ A)

тождественно истинна, то есть принимает значение 1 при любом значении переменной х.

19
19

В программе описан одномерный целочисленный массив с индексами от 0 до 10. Ниже представлен записанный на разных языках программирования фрагмент одной и той же программы, обрабатывающей данный массив.

Бейсик

s = 0 п = 10
FOR i = 0 ТО п - 1
	s = s + 2 * A(i) - A(i+1) 
NEXT i

Паскаль

s : = 0; n := 10;
for i := 0 to n - 1 do begin 
	s := s + 2 * A[i] - A[i +1] 
end

Си

s — 0; n = 10;
for (i = 0; i <= n - 1; i++) 
	s = s + 2 * A [ i ] - A [ i +1 ] ;

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

s := 0 n : = 10
нц для i от 0 до n - 1
	s := s + 2 * A[i] - A[i+1]
кц

В начале выполнения этого фрагмента в массиве находились двухзначные натуральные числа. Какое наименьшее значение может иметь переменная s после выполнения данной программы?

20
20

Ниже на четырёх языках записан алгоритм. Получив на вход число х, этот алгоритм печатает два числа: L и 6. Укажите наибольшее из таких чисел х, при вводе которых алгоритм печатает сначала 3, а потом 9.

Бейсик

DIM X, L, М AS INTEGER
INPUT X
L = 0: M = 9
WHILE X > 0
	L = L + 1
	IF M > (X MOD 10) THEN
		M = X MOD 10
	END IF
	X = X \ 10
WEND
PRINT L
PRINT M

Паскаль

var x, L, M: integer;	
begin	
	readln(x);	
	L := 0; M 9;	
	while x > 0 do	
		begin	
			L := L + 1;	
			if M > (x mod 10) M := x mod 10; then
				M := x mod 10;
			x := x div 10;	
		end;	
	writeln(L); write(M);	
end.	

Си

#include<stdio.h>
void main()
{
	int x, L, M;
	scanf("%d" , &x) ;
	L = 0; M = 9;
	while (x > 0){
		L = L + 1;
		if M > x % 10 { 
			M = x % 10
		}
		x = x /10;
	}
	printf("%d\n%d", L, M) ;
}

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

алг	
нач	
	цел х, L, М	
	ввод X	
	L := 0; М := 9	
	нц пока х > 0	
		L : = L + 1	
		если М > mod(х,10)	то
			М := mod(х,10) 
		все	
		х := div(х,10)	
	кц	
	вывод L, нс, М	
кон	
21
21

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

Бейсик

DIM А, В, Т, М, R AS INTEGER
А = -20: В = 20
М = A: R = F (А)
FOR Т = А ТО В
	IF F(Т) > R THEN 
		М = Т
		R = F (Т)
	END IF
NEXT Т
PRINT М

FUNCTION F (x)
	F = -3 * (x + 2) * (x - 6)
END FUNCTION

Паскаль

var a, b, t, M, R: integer;
function F(x: integer): integer;
begin
	F := -3 * (x + 2) * (x - 6) ;
end;

begin
	a := -20; b := 20;
	M := a; R := F(a);
	for t := a to b do 
	begin
		if (F(t) > R) then begin
			M := t;
			R := F(t); 
		end; 
	end;
write(M); 
end.

Си

int F(int х)
{
	return -3 * (х + 2) * (х - б);
}

void main()
{
	int a, b, t, M, R;
	a = -20; b = 20;
	M = a; R = F(a) ;
	for (t = a; t <= b; t++){
		if ( F(t)>R ) {
			M = t; R = F (t) ;
		}
	}
	printf("%d", M);
}

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

нач
	цел a, b, t, М, R
	а := -20; b := 20
	М := a; R:= F(а)
	нц для t от а до b
		если F(t)> R то
			М := t; R := F(t)
		все
	кц
вывод М
кон
алг цел F(цел х)
нач
	знач := -3 * (х + 2) * (х - б)
кон
22
22

У исполнителя Увеличитель две команды, которым присвоены номера:

1. прибавь 10,

2. прибавь 3.

Первая из них увеличивает число на экране на 10, вторая увеличивает его на 3. Программа для Увеличителя — это последовательность команд.

Сколько есть программ, которые число 1 преобразуют в число 33?

23
23

Сколько существует различных наборов значений логических переменных x1, х2, ... x9, x10, которые удовлетворяют всем перечисленным ниже условиям?

((x1 ~ x2) v (x3 ~ x4)) ∧ (¬((x1 ~ x2) → (x3 ~ x4))) = 1

((x2 ~ x4) v (x7 ~ x8)) ∧ (¬((x5 ~ x6) → (x7 ~ x8))) = 1

((x1 ~ x2) v (x7 ~ x8)) ∧ (¬((x1 ~ x2) → (x7 ~ x8))) = 1

(x1 ~ x4) → (x9 ~ x10) = 1

В ответе не нужно перечислять все различные наборы значений x1, х2, ... x9, х10, при которых выполнена данная система равенств. В качестве ответа Вам нужно указать количество таких наборов.

 

Часть 2.

Запишите сначала номер задания (24, 27 и т. д.), затем полное решение. Ответы записывайте чётко и разборчиво.

24

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

Бейсик

DIM N AS LONG 
INPUT N 
max digit = 0 
WHILE N >= 10
	digit = N MOD 10 
	IF digit < max digit THEN 
		max digit = digit 
	END IF 
	N = N \ 10 
WEND
PRINT max digit 
END

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

алг
нач
	цел N, digit, max digit 
	ввод N
	max digit := 0 
	нц пока N >= 10
		digit := mod(N, 10) 
		если digit < max digit to 
			max digit := digit 
		все
		N := div(N, 10)
	кц
	вывод max digit
кон

Паскаль

var N: longint;
	digit, max digit: integer; 
begin
	readln(N); 
	max digit := 0; 
	while N >= 10 do 
	begin
		digit := N mod 10; 
		if digit < max digit then 
			max digit := digit;
		N := N div 10; 
	end;
	writeln(max digit); 
end.

Си

#include <stdio.h> int main()
{
	long int N; 
	int digit, max digit; 
	scant("%ld", &N); 
	max digit = 0; 
	while (N >= 10)
	{
		digit = N % 10; 
		if (digit < max digit) 
			max digit = digit;
		N = N / 10;
	}
	printf("%dM, max digit);
}

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

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

2. Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:

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

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

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

Показать ответ

Содержание верного ответа

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

1. Программа выведет число 0.

2. Первая ошибка. Неверное условие окончания цикла. Программа не будет рассматривать старшую цифру числа.

Строка с ошибкой:

while N >= 10 do

Возможные варианты исправления:

while (N >= 1) 

или

while (N > 0)

При этом замены на

while (N > 1) или while (N >= 0) 

корректными не являются.

3. Вторая ошибка. Неверная операция сравнения при поиске максимума.

Строка с ошибкой:

IF digit < max digit THEN

В этой строке необходимо заменить знак «»

25

Дан целочисленный массив из 30 элементов. Элементы массива могут принимать целые значения от 0 до 10 000 включительно. Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти и вывести минимальное значение среди трёхзначных элементов массива, не делящихся на 20. Если в исходном массиве нет трёхзначного элемента, не кратного 20, то вывести сообщение «Не найдено».

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

Бейсик

N = 30
DIM A(N) AS INTEGER
DIM I, J, MIN AS INTEGER
FOR I = 1 TO N
	INPUT A(I)
NEXT I
...
END

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

алг
нач
	цел N = 30
	целтаб а[1:N]
	цел i, j, min
	нц для i от 1 до N
		ввод а[i]
	кц
	...
кон

Паскаль

const
	N = 30;
var
	a: array [1..N] of integer;
	i, j, min: integer;
begin
	for i := 1 to N do
		readln(a[i]);
	...
end.

Си

#include <stdio.h>
#define N 30
void main() {
	int a[N];
	int i, j, min;
	for (i =0; i < N; i++)
		scanf("%d", &a[i]);
	...
}

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

Объявляем массив А из 30 элементов.	
Объявляем целочисленные переменные I, J, MIN.
В цикле от 1 до 30 вводим элементы массива А с 1-го по 30-й.

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

Показать ответ

Содержание верного ответа

На языке Паскаль

 min := 1000;
for i := 1 to N do
	if (a [i] >= 100) and (a[i] <= 999) and (a [ i] mod 20 <> 0) and (a[i] < min) then 
		min := a[i];
if min < 1000 then writeln(min) else writeln('He найдено');

На алгоритмическом языке

 min := 1000 
нц для i от 1 до N
	если a[i] >= 100 и a[i] <= 999 и mod(a[i], 20) <> 0 и a[i] < min 
	то
		min := a[i] все
кц
если min < 1000
то
	вывод min 
иначе
	вывод "He найдено" 
все

На языке Бейсик

 MIN = 1000 
FOR I = 1 ТО N
	IF А(I) >= 100 AND А(I) <= 999 AND A(I) MOD 20 <> 0 AND A(I) < MIN THEN 
		MIN = А(I)
	END IF 
NEXT I
IF MIN < 1000 THEN 
	PRINT MIN 
ELSE
	PRINT "He найдено"
END IF

На языке Си

min= 1000;
for (i = 0; i < N; i++)
	if (a[i] >= 100 && a[i] <= 999 && a[i] % 20! = 0 && a[i] < min)
		min = a[i];
if (min < 1000)
	printf("%d", min);
else
	printf("Не найдено");
26

Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу один или три камня или увеличить количество камней в куче в два раза. Например, имея кучу из 12 камней, за один ход можно получить кучу из 13, 15 или 24 камней. У каждого игрока, чтобы делать ходы, есть неограниченное количество камней.

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

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

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

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

Задание 1

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

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

Задание 2

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

Задание 3

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

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

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

Показать ответ

Содержание верного ответа

Задание 1.

а) Петя может выиграть в один ход, если S = 20, ... 39. Во всех этих случаях достаточно удвоить количество камней, после чего их количество станет больше 39, и игра закончится. При значениях S, меньших 20, за один ход нельзя получить кучу, количество камней в которой будет не менее 40.

б) Ваня может выиграть первым ходом (при любой игре Пети), если S = 19. Тогда после первого хода Пети в куче будет 20, 22 или 38 камней. После этого Ваня удваивает количество камней и выигрывает в один ход.

Задание 2.

При S = 16 или S = 18 у Пети есть выигрышная стратегия, позволяющая ему выиграть своим вторым ходом. В этих случаях Петя не может выиграть первым ходом (см. п. 1а)). Однако он может получить кучу из 19 камней, добавив в кучу один камень (при S = 18) или три камня (при S = 16). После этого хода Петя попадает в ситуацию, разобранную в п. 16) для Вани, то есть у игрока, делающего следующий ход (у Вани), нет хода, сразу приводящего его к выигрышу, а у Пети выигрышный ход «удвоить количество камней» есть независимо от того, какой ход сделал Ваня.

Задание 3.

При S = 15 у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом. После первого хода Пети в куче будет 16, 18 или 30 камней. Если в куче станет 30 камней, то Ваня удвоит количество камней и выиграет своим первым ходом. Если после первого хода Пети в куче оказалось 16 или 18 камней, то Ваня попадает в ситуацию, разобранную в п. 2 для Пети, и у него есть выигрышная стратегия, позволяющая ему выиграть своим вторым ходом.

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

Вариант 6

Вариант 6

27

В химической лаборатории для большого количества органических молекул измеряется количество входящих в молекулу атомов углерода — целое неотрицательное число, которое будем называть С-индексом молекулы. Исследуемых молекул может быть очень много, но не может быть меньше трёх. С-индексы во всех молекулах различны. С-индекс, по крайней мере одной молекулы, является нечётным числом.

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

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

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

\n

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

3

0

13

202

Программа должна вывести в порядке возрастания номера молекул, С-индексы которых принадлежат основному множеству данной серии. Нумерация молекул ведётся с единицы.

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

2

3

Показать ответ

Содержание верного ответа

Основное множество состоит из всех значений С-индексов, кроме 0, если он встречается, и кроме минимального нечётного значения, если таких значений чётное число. Программа читает все входные данные один раз, не запоминая все входные данные в массиве, размер которого равен N. Во время чтения данных запоминается номер 0, если он встретится (по условию все значения различны, поэтому 0 встречается не больше одного раза), подсчитывается количество нечётных значений и ищется минимальное нечётное значение. После окончания ввода распечатываются все номера, кроме номера 0 и номера минимального нечётного значения, но только в случае, если их количество чётно. Баллы начисляются только за программу, которая решает задачу хотя бы для одного частного случая. Ниже приведёны примеры решения задания на языках Паскаль и Бейсик.

Допускаются решения, записанные на других языках программирования Пример правильной и эффективной программы на языке Паскаль

var n, i, j, k, cnt, min, a: longint; begin	readln(n);	min := 1000000001;	k := 0;	j : = 0;	cnt := 0;	for i := 1 to n do 	begin		readln (a);		if a = 0 then j := i; 		if a mod 2 <> 0 then 		begin			cnt := cnt + 1; 			if a < min then 			begin				min := a; 				k := i; 			end 		end 	end;	for i := 1 to n do	if (i <> j) and ((cnt mod 2 <> 0) or (i <> k)) then 		write(i, ’ ') ;end.

Пример правильной и эффективной программы на языке Бейсик

INPUT nmin = 0 k = 0 j = 0 cnt = 0FOR i = 1 ТО n 	INPUT a	IF а = 0 THEN j = i 	IF a MOD 2 <> 0 THEN 		cnt = cnt + 1		IF (min = 0) OR (a < min) THEN 			min = a 			k = i 		END IF 	END IF NEXT iFOR i = 1 TO n	IF (i <> j) AND ((cnt MOD 2 <> 0) OR (i <> k)) THEN PRINT i NEXT i END
0 из 0
Ваш ответ Ответ и решение Первичный балл

Здесь появится результат первой части.

Нажмите на кнопку «Завершить работу», чтобы увидеть правильные ответы и посмотреть решения.

2 393 229
Уже готовятся к ЕГЭ, ОГЭ и ВПР.
Присоединяйся!
Мы ничего не публикуем от вашего имени
или
Ответьте на пару вопросов
Вы...
Ученик Учитель Родитель
Уже зарегистрированы?