// PascalABC.Net 3.0, сборка 1066 // PascalABC.Net 3.0, сборка 1066 const nn=50; mm=50; var a:array[1..mm,1..nn] of integer; i,j,m,n,k:integer; begin Write('Введите число строк и столбцов массива: '); Read(m,n); Write('Введите значение, заменяемое нулем: '); Read(k); Randomize; Writeln('*** Исходный массив ***'); for i:=1 to m do begin for j:=1 to n do begin a[i,j]:=Random(51)-25; Write(a[i,j]:4) end; Writeln end; Writeln('*** Результирующий массив ***'); for i:=1 to m do begin for j:=1 to n do begin if i+j=k then a[i,j]:=0; Write(a[i,j]:4) end; Writeln end end.
Последняя цифра числа - остаток деления на N, где N - основание системы счисления. Соответственно, последние две цифры - остаток от деления на N^2.
12₄ = 1*4 + 2 = 6₁₀
Выходит, что нам нужно найти все десятичные числа, которые не превосходят 40 и при делении на 16 дают остаток 12.
Общий вид таких чисел: k*16 + 6. K - любое целое неотрицательное число. Теперь просто подставляем.
если k = 0, то получается число 5.
если k = 1, то получается число 22.
если k = 2, то получается число 38.
Очевидно, что дальше мы выйдем за границы нужного нам диапазона.
ответ: 5, 22, 38