Вот: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 const n=5; var a: array[1..n,1..n] of integer; i,j,s: integer; begin s: =0; randomize; for i: =1 to n do begin for j: =1 to n do begin a[i,j]: =random(10); write(a[i,j]: 4); if (i+j) mod 3=0 then s: =s+a[i,j]; end; writeln; end; writeln('s=',s); end.
Удобнее всего решать с использованием промежуточной двоичной системы, поскольку 16=2⁴, в 8=2³. В силу этого каждая шестнадцатиричная цифра изображается четырьмя битами (тетрадой), а каждая восьмеричная - тремя (триадой). Заменим неизвестные биты символом Х. 1010₁₆ = ХХХ ХХ1 010₈ Запишем изображения битов друг под другом с учетом известной нам информации. Х Х Х Х 1 0 1 0 Х Х Х Х Х 1 0 1 0 Теперь известные биты в конце чисел можно отбросить Х Х Х Х Х Х Х Х Х Очевидно, во втором (восьмеричном числе первый бит нулевой, поскольку оба числа в двоичной записи одинаковы и остается только ₂. Эти четыре бита (обозначим их IJKL) могут дать 16 комбинаций. Но требование, чтобы восьмеричное число имело три цифры, старшая из которых не может быть нулем, запрещает комбинацию IJ=00, поэтому 4 комбинации из 16 надо вычеркнуть. Останется 12.