1. найти все делители заданного числа. 2. найти простые числа из промежутка m..n. 3. найти палиндром заданного числа. 4. найти простые делители заданного числа, являющиеся палиндромом.
Begin var a: integer; readln(a); for i: integer := 1 to abs(a) do if (a mod i = 0) then writeln('> ', i); end.
function Simple(a: integer): boolean; begin result := true; for i: integer := 2 to (a div 2) do if (a mod i = 0) then begin result := false; break; end; end;
begin var a: integer; readln(a); writeln(Simple(a)); end.
var a: integer;
begin readln(a); for i: byte := length(a.ToString()) downto 1 do write(a.ToString()[i]); end.
function Simple(a: integer): boolean; begin result := true; for i: integer := 2 to (a div 2) do if (a mod i = 0) then begin result := false; break; end; end;
function par(a: integer): string; begin for i: byte := length(a.ToString()) downto 1 do result += a.ToString()[i]; end;
begin var a: integer; readln(a); for i: integer := 1 to abs(a) do if ((a mod i = 0) and (Simple(a)) and (par(a) = inttostr(i))) then writeln('> ', i); end.
var s, wd: string; i, j, m, n, pt, step: integer; Words, WordsSort: array[1..k] of string; InOrder: boolean;
begin Write('Введите строку: '); Readln(s); n := Length(s); pt := 1; m := 0; repeat // Пропускаем все символы до первого непробельного while pt <= n do if Ord(s[pt]) <= 32 then Inc(pt) else break; if pt <= n then begin // Выделяем очередное слово wd := ''; while pt <= n do if Ord(s[pt]) > 32 then begin wd := wd + s[pt];Inc(pt) end else break; if wd <> '' then begin Inc(m);Words[m] := wd end end until pt > n; // Теперь Words содержит все m слов. // Отсортируем их в массиве WordsSort методом Шелла for i := 1 to m do WordsSort[i] := Words[i]; step := m div 2; while step > 0 do begin for j := m - step downto 1 do begin i := j; while i <= m - step do begin if WordsSort[i] > WordsSort[i + step] then begin wd := WordsSort[i]; WordsSort[i] := WordsSort[i + 1]; WordsSort[i + 1] := wd end; i := i + step end end; step := step div 2 end; // Осталось поэлементно сравнить оба массива InOrder := true; i := 1; while InOrder and (i <= m) do begin InOrder := (Words[i] = WordsSort[i]); Inc(i) end; if m = 0 then Writeln('Строка не содержит слов') else if InOrder then Writeln('Cлова упорядочены') else Writeln('Cлова не упорядочены') end.
Введите строку: слово1 слово2 слово4 слово3 слово5 Cлова не упорядочены
"Современный" вариант решения на Паскале:
// PascalABC.Net 3.0, сборка 1064 var s:string; begin Write('Введите строку: '); Readln(s); var Delim:=Range(0,32).Select(x->Chr(x)).ToArray; var Words:=s.Split(Delim).Where(x->x<>''); var WordsSort:=Words.Sorted; if Words.SequenceEqual(WordsSort) then Writeln('Cлова упорядочены') else Writeln('Cлова не упорядочены') end.
Для решения определим 1. Время передачи по высокоскоростному каналу 2. Время передачи по низкоскоростному каналу 3. Время для получения первых 1024 Кб 4. Всё сложим.
var a: integer;
readln(a);
for i: integer := 1 to abs(a) do
if (a mod i = 0) then
writeln('> ', i);
end.
function Simple(a: integer): boolean;
begin
result := true;
for i: integer := 2 to (a div 2) do
if (a mod i = 0) then
begin
result := false;
break;
end;
end;
begin
var a: integer;
readln(a);
writeln(Simple(a));
end.
var
a: integer;
begin
readln(a);
for i: byte := length(a.ToString()) downto 1 do
write(a.ToString()[i]);
end.
function Simple(a: integer): boolean;
begin
result := true;
for i: integer := 2 to (a div 2) do
if (a mod i = 0) then
begin
result := false;
break;
end;
end;
function par(a: integer): string;
begin
for i: byte := length(a.ToString()) downto 1 do
result += a.ToString()[i];
end;
begin
var a: integer;
readln(a);
for i: integer := 1 to abs(a) do
if ((a mod i = 0) and (Simple(a)) and (par(a) = inttostr(i))) then
writeln('> ', i);
end.