Вот решение на С++.
Использован цикл while. (аналог цикла repeat)
//PascalABC.NET версия 3.4.0.1677 от 17.06.18
//Если программа не запускается, то обновите версию
const
m = 99;
var
n,i, j: integer;
A,: Array[1..m] of integer;
begin
Randomize;
write('n = ');
readln(n);
for i := 1 to n do
begin
repeat
j := Random(n) + 1
until A[j] = 0;
A[j] := i;
end;
for i := 1 to n do
write(A[i]:3);
writeln;
end.
A:=20; //a=20
b:=3; //b=3
b:=a div b; { a div b, это целая часть от деления А на B, есть от деления 20 на 3
20 / 3 = 6 (2), 20 div 3 = 6(т.к. 18 / 6 = 3). b = 3}
c:=a mod (b+1); { A mod B, это остаток от деления A на B, 20 mod (3+1) = 20 mod 4 = 0 (т.к. 20 нацело делится на 4, целая часть от деления = 5) }
C = 0
a:=28; // a=28
b:=7; // b=7
b:= a mod b; { 28 mod 7 = 0, т.к 28 без остатка делится на 7, 28 div 7 = 4 (7*4=28) b=0}
c:=a div (b+1); // a div (b+1) = 28 div 1 = 28
C = 28
1.
2(10) = 10(2); (10)- индекс внизу без скоб
7(10) = 111(2);
17(10) = 10001(2);
68(10)= 1000100(2);
315(10)= 100111011(2).
2.
101(2)= 1 * 2^(2) + 0 *2^(1)+ 1 . 2^(0) = 4 + 1 = 5(10);
11101(2) = 1 *2^(4) + 1 * 2^(3) + 1 *2^(2)+ 0 *2^(1) + 1 *2^(0)= 16 + 8 + 4 + 1 = 29(10);
101010(2) = 1 *2^(5) + 0 *2^(4)+ 1*2^(3) + 0 *2^(2) + 1 *2^(1) + 0 *2^(0)= 32 + 0 + 8 + 0 + 2 + 0 = 42(10);
100011(2) = 1 *2^(5)+ 0 * 2^(4) + 0 *2^(3)+ 0 *2^(2) + 1 *2^(1) + 1 *2^(0)= 32 + 2 + 1 = 35(10).