Задача B. Cyberpunk 2077 Инна играет в игру Cyberpunk 2077 и предпочитает одолевать врагов с лома. Однако,
для улучшения характеристик лома нужны евродоллары и компоненты, которые можно получить
только взломав терминал, а взлом терминала с лома невозможен обязательно прохождение интеллектуальной мини-игры. Инна не любит интеллектуальные мини-игры и вам нужно
ей со взломом терминалов.
Для взлома терминала необходимо набрать определенную последовательность кодов длиной k,
выбирая очередной код из таблицы размером n на n.
Первый код можно выбрать только из первой строки таблицы. Если он находился в столбце с
номером p, то следующий код можно взять только из этого столбца. Если очередной код в находился
в строке с номером q, то выбрать очередной код можно только из этой строки и т.д. Выбирать одну
и ту же ячейку несколько раз нельзя Инне набрать заданную последовательность кодов
для взлома терминала. Для лучшего понимания посмотрите рисунок после примеров.
В первой строке входных данных записано число t количество терминалов, которые необходимо взломать. Затем следует t описаний терминалов. Каждое описание начинается с пустой строки.
Затем следует строка с одним числом k длиной последовательности кодов, которую необходимо
ввести. Следующая строка содержит k двузначных шестнадцатиричных чисел, задающих последовательность кодов. Следующая строка содержит число n. В следующих n строках содержится
описание таблицы с кодами, каждая строка которой содержит n двузначных шестнадцатиричных
чисел. Нумерация в таблице начинается с единицы, из верхнего левого угла.
Для каждого из t терминалов выведите последовательность номеров строк/столбцов, которые
нужно выбирать для взлома терминала. Если подходящих последовательностей несколько можно
выбрать любую. Каждую последовательность выводите в новой строке.
В первом тесте t = 3. Оценка за этот тест: ответ для каждого терминала должен
обязательно содержать k чисел. Каждый верно взломанный терминал оценивается в
Проверка осуществляется в режиме online (результат виден сразу).
Во втором тесте t = 7. Оценка за этот тест: ответ для каждого терминала должен
обязательно содержать k чисел. Каждый верно взломанный терминал оценивается в
Во время тура проверяется, что сданный файл содержит количество чисел, равное сумме k по
всем терминалам и все числа для каждого терминала находятся в пределах от 1 до n. Проверка
правильности ответа осуществляется в режиме oine (результат виден после окончания тура).
Примеры
1
4
BD 1C BD 55
5
1C BD 1C 55 55
55 55 55 1C 1C
E9 1C 55 55 E9
BD 1C 1C 1C BD
55 BD E9 55 1C
ответы на тест:
2 4 1 2
В строке №7 мы записали переменную для хранения индекса отрицательного элемента.
В строке №19 мы задаем условие, при котором перебираются все 10 сгенерированных чисел и среди них ищется отрицательный, и если отрицательное число находится, то его индекс (номер) заносится в переменную K (строка №21).
В строке №23 записывается условие: если переменная «K» больше 0 (т.е. есть отрицательные элементы), то на экран выводится сообщение (строка №24). В обратном случае (если нет отрицательных элементов, и «K» так и останется равным 0), выведется сообщение (строка №26)
Алгоритм такой: просматриваем массив от конца к началу. И завершаем работу, как только встретим отрицательный элемент. А если так и не встретим до начала массива, значит таких элементов в массиве нет.
const
n=20; { размер массива }
var
a:array[1..n] of integer;
i:integer;
found:boolean;
begin
Randomize;
Writeln('Элементы массива');
for i:=1 to n do begin
a[i]:=Random(21)-10; { случайное число на интервале [-10;10] }
Write(a[i]:4)
end;
Writeln;
{ собственно задание }
i:=n;
repeat
found:=(a[i]<0);
Dec(i)
until (i=0) or found;
if found then Writeln('Номер элемента равен ',i+1)
else Writeln('Отрицательных элементов нет')
end.
Тестовое решение:
Элементы массива
-3 5 -2 3 2 -2 -5 7 9 -3 1 -2 -1 -6 1 -6 2 8 7 1
Номер элемента равен 16