Если используется 60 различных символов, то для кодирования одного символа требуется log(2)60 ≈ 6 бит
Для кодирование 50 символов нужно 50*6=300 бит
<em>// PascalABC.NET 3.3, сборка 1590 от 03.12.2017</em>
<em>// Внимание! Если программа не работает, обновите версию!</em>
uses NumLibABC;
begin
var oL:=new Zeroin(x->Ln(x)-(0.5/Sqr(x)),1e-8);
Writeln('x=',oL.Value(0.1,1.5):0:8)
end.
<u>Пример с точностью 10⁻⁸</u>
x=1.32786401
<u>Замечание:</u> Исходный текст класса Zeroin в составе библиотеки численных методов NumLibABC находится в стандартной поставке PascalABC.NET
<span> </span>М = 1/8 Мб = 1024 · . 1024/8 = 131 072 байта, W = 64/8 = 8 байтов
<span> </span><span> </span> N = M / W = 131 072/8 = 16 384 слова.
Во вложении показана принятая условная схема нумерации полей.
Предполагается, что если ферзь стоит на клетке с координатами (3,4), он может пойти по горизонтали, вертикали или диагонали. Соответствующие направления выделены цветом.
Чтобы взять фигуру (или пешку) противника по горизонтали, у обоих фигур должны быть одинаковы координаты строки (первые в паре).
Чтобы взять фигуру противника по вертикали, у обоих фигур должны быть одинаковы координаты столбца (вторые в паре в паре).
Наконец, чтобы взять фигуру противника по диагонали, у обоих фигур должна быть одинакова абсолютная величина разницы как между строками, так и между колонками.
Последнее правило взятия сложное, поэтому запишем его в условных обозначениях. Пусть Rq и Cq - соответственно номера строки и столбца, пересечение которых указывает положение клетки с ферзем. Пусть также фигура противника находится на клетке, заданной координатами Rx и Cx.
Тогда последнее правило можно записать в виде |Rq-Rx| = |Cq-Cx|
Теперь можно записать логическое выражение, значение которого истинно, если ферзь может взять фигуру (или пешку) противника.
(Rq=Rx) ∨ (Cq=Cx) ∨ (|Rq-Rx| = |Cq-Cx|)
<em>// PascalABC.NET 3.3, сборка 1625 от 17.01.2018</em>
<em>// Внимание! Если программа не работает, обновите версию!</em>
begin
var (Rq,Cq):=ReadInteger2('Введите номера горизонтали и вертикали ферзя:');
var (Rx,Cx):=ReadInteger2('Введите номера горизонтали и вертикали фигуры:');
if (Rq=Rx) or (Cq=Cx) or (Abs(Rq-Rx)=Abs(Cq-Cx)) then Writeln('Yes')
else Writeln('No')
end.
<u>Пример</u>
Введите номера горизонтали и вертикали ферзя: 3 4
Введите номера горизонтали и вертикали фигуры: 6 1
Yes
//PascalABC.NET 3.2 cборка 1318
Var
a,b,c:integer;
begin
readln(a,b,c);
if (a mod 5=0) and (c mod 5=0) and (b mod 5<>0) then
writeln(sqr(a),' ',sqr(b),' ',sqr(c)) else
if (a mod 5<>0) and (c mod 5<>0) and (b mod 5=0) then
writeln(a+10,' ',b+10,' ',c+10)
else
writeln((a+b+c)/3);
end.
Пример ввода:
15
5
34
Пример вывода:
18