Пирамида - основание правильный многоугольник, а боковые стороны треугольники
запишем условие: I=40Kб, строк=40, символы=64, N=256, страницы-?
решение: из формулы мощности алфавита найдем вес одного символа
N=2^i, 256=2^i, 2^8=2^i, i=8 бит
выразим информационный объем в битах
I=40Кб*1024*8=327680 бит
найдем из формулы информационного объема общее количество символов в тексте K=I/i=327680/8=40960
узнаем сколько страниц в реферате страницы=40960/40/64=16
это и есть ответ
Если нажать комбинацию Shift+Alt+D, то будет вставлена текущая дата.
Если набрать в редакторе =lorem() и нажать Enter, то вместо этой команды появится кусок текста из Lorem ipsum.
Если в процессе работы над документом нажать F4, то Word повторит последнюю команду (если вы до этого поставили точку, то он еще раз поставит точку и т.п.).
Если набрать в редакторе =rand.old(5,4) и нажать Enter, то вместо этой команды появятся пять абзацев, в каждом из которых четыре раза повторится предложение перекусить.
Если выделить кусок текста и нажать комбинацию Shift+F3, то изменится регистр для всего этого куска (весь текст станет набран заглавными, а если нажать еще раз, то строчными буквами).
Если набрать в редакторе =rand(1) и нажать Enter, то вместо этой команды появится случайный абзац из Справки.
Если набрать в редакторе =rand(5) и нажать Enter, то вместо этой команды появятся пять случайных абзацев из Справки.
Var
ast:array[1..30] of string;
procedure GetWord(s: string; var ib: integer; var pWord: string; var l: integer);
// Возвращает слово pWord, которое является подстрокой s
// Разделителем слов являются один и более пробелов.
// ib при вызове процедуры указывает на позицию в строке s,
// начиная с которой ведется поиск слова.
// При выходе из процедуры ib - позиция начала найденного слова,
// l- длина найденного слова, l=0 если слово не найдено.
var
i, n: integer;
w: string;
begin
n := Length(s);
l := 0;
w := '';
if ib >= n then begin
ib := n;
pWord := ''
end
else begin
i := ib;
while (s[i] = ' ') and (i < n) do i := i + 1;
ib := i;
w := '';
while (s[i] <> ' ') and (i < n) do
begin
w := w + s[i];
i := i + 1
end;
if i < n then begin
l := i - ib;
pWord := w
end
else begin
l := i - ib + 1;
pWord := w + s[n]
end;
if pWord[l]='.' then pWord:=Copy(pWord,1,l-1)
end
end;
procedure SortWords(n:integer);
// Сортировка первых n элементов массива ast
var
i,j:integer;
s:string;
begin
for i:=1 to n-1 do
begin
if ast[i]>ast[i+1] then
begin
s:=ast[i]; ast[i]:=ast[i+1]; ast[i+1]:=s;
j:=i;
while j>1 do
if ast[j]<ast[j-1] then
begin
s:=ast[j]; ast[j]:=ast[j-1]; ast[j-1]:=s;
j:=j-1
end
else j:=0
end
end
end;
var
s,st:string;
p,n,i,len:integer;
Flag:Boolean;
begin
st:=' aquila non captat muscas ';
st:=st+'dolus an virtus quis in hoste requirat ';
st:=st+'de mortuis aut bene aut nihil ';
st:=st+'esse oportet ut vivas non vivere ut edas.';
p:=1; i:=1; len:=1; n:=0;
while len>0 do
begin
GetWord(st,p,ast[i],len);
if len>0 then begin
p:=p+len;
n:=n+1;
i:=i+1
end
end;
for i:=1 to n do write(ast[i],' ');
SortWords(n);
writeln;
writeln;
s:=ast[1];
Flag:=True;
for i:=2 to n do
if ast[i]<>s then
begin
If Flag then write(s,' ')
else Flag:=True;
s:=ast[i];
end
else Flag:=False;
if Flag then write(ast[n],' ');
writeln
end.
Тестовое решение:
aquila non captat muscas dolus an virtus quis in hoste requirat de mortuis aut bene aut nihil esse oportet ut vivas non vivere ut edas
an aquila bene captat de dolus edas esse hoste in mortuis muscas nihil oportet quis requirat virtus vivas vivere