PascalABC
Объяснение:
1)
begin
WriteLn('Введите размер массива N: ');
var n := ReadInteger;;
var a := ArrRandomInteger(n, -20, 20);
a.PrintLn;
WriteLn('Сумма элементов, которые оканчиваются на число 2, равна ', a.Where(x -> (x mod 10 = 2) or (x mod 10 = -2)).Sum);
end.
2)
begin
var a := ArrRandomInteger(10, -10, 10);
a.PrintLn;
WriteLn('Индексы отрицательных нечетных элементов:');
foreach var i in a.Indices do
if (a[i].IsOdd) and (a[i] < 0) then Write(i, ', ');
end.
ответ: 1499 9949
Python:
def f(n):
digits = [int(i) for i in str(n)]
# 1
first_sum = digits[0] + digits[1]
# 2
second_sum = digits[1] + digits[2]
# 3
third_sum = digits[2] + digits[3]
# 4
amounts = [first_sum, second_sum, third_sum]
del amounts[amounts.index(min(amounts))]
# 5
amounts.sort()
return int(str(amounts[0]) + str(amounts[1]))
numbers = []
for x in range(1000, 10000):
if f(x) == 1318:
numbers.append(x)
print(numbers[0], numbers[-1])
Я не понял в первом задании что за переменная s написана в условии, вероятно там опечатка и должно быть написано переменной k, но да ладно...
Объяснение:
Задание 1
Алгоритм начинается с того, что переменной k присваивается значение 4
затем из строчки
for i := 1 to 3 do
мы понимаем, что переменная i последовательно принимает значение от 1 до 3 с шагом 1(то есть 1, 2 и 3), при каждом срабатывании алгоритма
При i равной 1 наш цикл запускается в первый раз и строчка
k := i + 2*k
ни что иное как
k := 1 + 2*4
то есть переменной k присваивается значение 9, затем цикл начинается заново, но переменная i уже имеет значение 2, а переменная k с раза заимела значение 9, тогда
k := 2 + 2*9
Теперь переменная k имеет значение 20, начинается 3й и последний цикл, где переменная i принимает значение 3, тогда
k := 3 + 2*20
И как итог переменная k примет значение 43, что программа и выведет на экран, согласно строчке
writeln(k)
Задание 2
Программа начинается с того, что переменным Dat[1...10] определённые значение, они указаны в самой программе и целесообразность их переписывания ещё раз стремится к 0
Затем переменной m присваивается значение 0 в строчке
m := 0
Затем начинается цикл for для переменной k, которая является просто номером переменной Dat[]
В этом цикле сравнивается значение переменной Dat[k] с переменной m и, в случае если значение переменной Dat[k] оказывается больше значения переменной m, то переменной m присваивается значение переменной Dat[k]
В первый раз мы сравниваем Dat[1] (ранее мы Dat[1] присвоили значение 56) с m (изначально значение 0)
А так как 56 > 0, то переменной m присваивается значение 56
Это видно из следующих строчек кода:
if Dat[k] > m then
begin
m := Dat[k];
end;
Во второй раз мы работаем уже с переменной Dat[2] (Её значение равно 70)
А так как 70 > 56, то переменной m присваивается значение 70
Далее программа последовательно сравнивает все остальные переменные Dat[3...10], с переменной m, которая имеет значение 70, но так как ни одно из оставшихся значений переменной Dat[k] не превосходит 70, то переменная m больше не меняется, а значит на выходе программа выведет на экран число 70, которое соответствует значению переменной m, что можно увидеть в строчке
writeln(m)
Постарался максимально подробно... Но если планируешь сдавать ОГЭ по инфе, то лучше самому такие задачи решать, для начала скачав себе на ПК паскаль, переписывая туда код и потом думать почему ответ такой и как так вышло...
Удачи