а=2021
b=2+21=23 (div - целочисленное деление, mod - остаток от деления)
8
3 задача
N=30 символов => 32=2 в 5 степени >=30
один символ кодируется 5 битами, 3 символа 3*5=15 битов.
Сказано, что каждый шифр кодируется целым числом байтов
2байта=16 бит>= 15 бит
всего 100 шифров, => 2*100=200 байт
<em>// PascalABC.NET 3.3, сборка 1540 от 16.09.2017</em>
<em>// Внимание! Если программа не работает, обновите версию!</em>
begin
var n:=ReadInteger('n=');
var a:=ArrRandom(n,-35,35); a.Println;
var (k1,k3):=ReadInteger2('Введите границы индексов для замены элементов:');
// блок "защиты от дурака"
if k1<1 then k1:=1;
if k1>n-1 then k1:=n-1;
if k3<1 then k3:=1;
if k3>n-1 then k3:=n-1;
if k1>k3 then Swap(k1,k3);
// -----------------------
for var i:=k1-1 to k3-1 do a[i]:=-a[i];
a.Println
end.
<u>Пример</u>
n= 13
-27 18 15 31 27 -1 -5 20 -20 -34 -7 -33 16
Введите границы индексов для замены элементов: 6 9
-27 18 15 31 27 1 5 -20 20 -34 -7 -33 16
var
y: System.uint64; //Большая цЫфра же и положительная
x, i: byte; //Нет смысла большие числа брать слишком, переполнение будет
begin
readln(x); //Принимаем число...
y := 1;
i := 1;
repeat
y *= i; //...и умножаем такое-то количество раз
i += 1;
until (i > x);
if (y = 0) then //Выводим, предусмотрев переполнение
writeln('Слишком большая цЫферка')
else
writeln(y);
<span>end.
</span><span>==========================================
</span><span>Int64 - это то же самое, что LongInt, а Uint64 (unsign long int) - длинное число без знака, при правильном использовании позволяет записывать в переменную числа, в 2 раза превышающие максимум Int64</span>