<span>//PascalABC.NET
//Версия 3.3, сборка 1611 (06.01.2018)</span>
begin
var a:=ArrRandom(10,0,23); a.Println;
var t:=a.Where(t->t<=20).Where(t->t>18).Count;
Println('t=',t);
end.
Пример:
8 14 20 19 16 6 20 0 2 2
t= 3
1 символ = 1 байт
40*50*10=20000 символов всего
12500 байт = 1562,5 бит
20000:1562,5=13 (приблизительно)
N-мощность алфавита
2^13=8192
Ответ: N=8192
(B v C & F & C & B) v !F = B v !F
В скобках B v C & F & C & B = B & (1 v C & F & C) = B
A & B v !(A & !B) = A & B v !A v B = B & (A v 1) v !A = B v !A
var a:array of integer;
N,i,k1,k2,k3:integer;
BEGIN
readln(N);
SetLength(a,N);
for i:=0 to N-1 do begin
read(a[i]);
if (a[i]=0) then k3:=k3+1;
if (a[i]>0) then k1:=k1+1;
if (a[i]<0) then k2:=k2+1;
end;
writeln(k1);
writeln(k2);
writeln(k3);
for i:=0 to N-1 do
write(a[i],' ');
end.
Полное ветвление:
<em>if</em> логическое выражение <em>then</em> оператор
<em>else</em> оператор;
Неполное ветвление:
<em>if</em> логическое выражение <em>then</em> оператор;
Если ветвления вложенные и среди них есть неполные, надо помнить, что каждое <em>else</em> связывается с ближайшим предшествующим ему <em>if</em>, не имеющем <em>else</em>.
Например, рассмотрим конструкцию
<em>if</em> a>b <em>then if</em> c=d <em>then</em> x:=1 <em>else</em> x:=2;
Без упомянутого правила неясно, что имелось в виду:
<em>if</em> a>b <em>then</em>
<em>if</em> c=d <em>then</em> x:=1 <em>else</em> x:=2;
или же
<em>if</em> a>b <em>then</em>
<em>if</em> c=d <em>then</em> x:=1
<em>else</em> x:=2;
Знание правила позволяет разрешить вопрос: имеется в виду первый вариант.
А если нужно получить второй - к нашим услугам блок:
<em>if</em> a>b <em>then</em>
<em>begin if</em> c=d <em>then</em> x:=1 <em>end</em>
<em>else</em> x:=2;