Задача The king and the knight Напомним прежде всего некоторые шахматные правила, которые понадобятся для решения задачи.
Король (king) за один ход может перейти из той клетки шахматной доски, в которой он находится, в любую соседнюю по вертикали, горизонтали или диагоналям. Естественно, он не может при этом выйти за пределы доски.
Конь (knight) может пойти на любое поле доски, если оно располагается на другом конце русской буквы Г (то есть вначале конь перемещается на два поля по горизонтали или по вертикали, а затем на одну клетку перпендикулярно первоначальному направлению). Выходить за границы доски также нельзя.
Будем говорить, что фигура A находится под боем фигуры B, если фигура B за один ход может переместиться в клетку, в которой находится фигура A.
А теперь — задача… В различных клетках шахматной доски находятся две фигуры: король и конь. Вам требуется выяснить истинность или ложность каждого из четырёх утверждений:
король находится под боем коня;
король не находится под боем коня, но будет находиться под боем после одного допустимого хода коня;
конь находится под боем короля;
конь не находится под боем короля, но будет находиться под боем после одного допустимого хода короля
Сможете решить эту задачу?
Формат входных данных
В первой строке файла записывается положение короля в стандартной шахматной нотации (согласно этой нотации, строки обозначаются снизу вверх латинскими буквами от a до h, а столбцы слева направо цифрами от 1 до 8, так что нижняя левая клетка обозначается как a1, а верхняя правая — h8). Во второй строке аналогичным образом записывается положение коня.
Формат выходных данных
Выведите строку из четырёх символов, каждый из которых принимает значение «Y» или «N» в зависимости от того, истинно или ложно очередное утверждение.
var a : array [1..3, 1..4] of integer
b : array [1..3] of integer
Max, i, j : integer
BEGIN
crt;
for i:=1 to 3 do
begin
for j:=1 to 4 do
begin
read (a[i, j]); // вводим элементы в массив a[1..3, 1..4]
end;
writeln; // делаем пустой перевод строки
end;
for i:=1 to 3 do
begin
b[i] := a[i, 1];
for j:=1 to 4 do
begin
if a[i, j] > b[i] then b[i] := a[i, j];
// находим максимальный элемент в каждой строке и записываем в b[1..3]
end;
end;
Max := b[1];
for i:=1 to 3 do if b[i] > Max then Max := b[i];
// Находим максимальный элемент из максимальных элементов
writeln (Max); // Выводим его на экран
END.
А9)1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58 61 64 67 70 73 76 79 80 81 82 83 85 88 91 94 97 100
A10) 28
Объяснение:
А9
k:=0
Ты проверяешь 100 чисел от 1 до 100 (строка про i for i:=1 to 100 do) и ниже у тебя 2 условия
if (i div 4 =20) or (i mod 3 = 1) then
k:=k+1
это условие говорит, что если i div 4=20 или i mod 3=1 тогда ты k увеливаешь на 1. То есть если число подходит хотя бы по 1 из условий ты увеливаешь k на единицу
div это целая часть от деления или по другому чтоб было понятнее то что в числе до запятой. Допустим 7 div 3 =2 так как 7 делить на 3=2,33 но целая часть это 2
Так вот по нашему первому условию подойдут числа 80 81 82 83 потому что их целая часть от деления на 4 будет равна 20
Во втором условии i mod 3=1 mod это остаток от деления но это уже не то что после запятой а именно остаток. Как столбиком поделишь то что будет в остатке это mod. Например 10 mod 3 =1 так как 10 делить на 3 это будет 3 целых и 1 в остатке.
Так вот по нашему второму условию подходят все числа от 1 до 100 в которых после деления на 3 останется 1. Это числа 1 4 7 10 13... 82 85 88 91 94 97 100. Заметь что число 82 подходило и по первому условию так что его 2 раза не считаем. И после каждого подходящего такого числа мы к увеливаем на 1. Всего таких чисел 37 а нам надо вывести значение к которое будет равно количеству этих чисел. Сами числа написаны в ответе
А10
Так как s не присвоили никакого значения значит s изначально 0
Даны элементы массива B[1] B[2] B[3] B[4] B[5] B[6] B[7]
k:=-5
Ты снова проверяешь 7 элементов (строка for n:=1 to 7 do) сначала первый потом 2 потом 3 и тд до 7
B[n] сначала будет B[1] так как n cначала проверяешь первый элемент массива
B[n]:=k+n;
то есть сначала повторяюсь проверяешь B[1]
B[1]:= -5+1=-4
k:=k+1 то есть k:=-5+1 =-4
s:=s+2*B[1]=0+2*(-4)=-8
Теперь проверяем n=2
B[2]: = k+n k уже равно -4 а n равно 2
B[2] :=-4+2 =-2
k:=-4+1=-3
s:= -8+2*(-2)=-12
B[3]=-3+3=0
k:=-2
s:=-12+2*0=-12
B[4]:=-2+4=2
k:=-1
s:=-12+2*2=-8
B[5]:=-1+5=4
k:=0;
s:=-8+2*4=0
B[6]:=6
k:=1
s:=0+2*6=12
B[7]=1+7=8
k:=2
s:=12+2*8=28
В итоге значение s 28
Надеюсь, что понятно объяснил. И заранее извиняюсь за грамотность-лениво столько писать и расставлять запятые)