- •Оценка эффективности алгоритмов
- •Целочисленная арифметика
- •Дано натуральное число. Выяснить является ли оно палиндромом, то есть читается справа налево и слева направо одинаково
- •Дано натуральное число. Выяснить соотношение между количествами двоек и пятерок в этом числе
- •Найти самую большую и самую маленькую цифры данного натурального числа
- •Выяснить образуют ли цифры натурального числа возрастающую последовательность
- •Формат выходного файла
- •Формат входного файла
- •Формат выходного файла
- •Формат входного файла
- •Формат входного файла
- •Формат выходного файла
- •Длинная арифметика
- •Выходные данные
- •Задачи Задача 52 Иностранные земли
- •Входные данные.
- •Выходные данные.
- •Формат входного файла
- •Формат выходного файла
- •Задачи Задача 56 Уравнение
- •Решение
- •Одномерные массивы
- •Базовые задачи на массивы
- •Задача 15 Сокращение одночленов
- •Входные данные:
- •Задача 16 Школьный субботник
- •Входные данные:
- •Входные данные:
- •Выходные данные:
- •Примеры
- •Задача 27 Решение систем линейных уравнений на Pascal
- •Двумерные массивы
- •Описание массива
- •Способы создания массива
- •Задачи:
- •Задача 5 Малыш играет в "Морской бой 2" Малыш играет в "Морской бой". Поле для игры представляет собой квадрат
- •Входные данные
- •Выходные данные
- •Задача 26 Шарик в лабиринте
- •Примечание
- •Задача 27 Блохи
- •В первой строке входного файла Input.Txt находится 5 чисел, разделенных пробелом: n, m, s, t, q.
- •Входные данные
- •Выходные данные
- •Примеры
- •Задача 34 Магический квадрат
- •Формат входного файла
- •Формат выходного файла
- •Входные данные
- •Выходные данные
- •Входные данные
- •Выходные данные
- •Рекурсия
- •Комбинаторика
- •2.5. Генерация комбинаторных объектов
- •Множество всех подмножеств
- •Перестановки
- •Размещения
- •Перестановки с повторениями
- •Сочетания с повторениями
- •Перебор
- •Символ o()
- •Отсечение по времени
- •Рассмотрим несколько олимпиадных задач.
- •Шарик в лабиринте
- •Задача 1. Шарик в лабиринте
- •Задача 3 Цепочка слов
- •Входные данные
- •Выходные данные
- •Примеры
- •Формат входного файла
- •Формат выходного файла
- •Примеры
- •Динамическое программирование
- •Задача 8 Гвоздики
- •Задача 13 Лесенки
- •Задача 18 Свинья-копилка
- •Входные данные
- •Выходные данные
- •Задача 13 Лесенки Лесенкой называется набор кубиков, в котором каждый более верхний слой содержит кубиков меньше, чем предыдущий.
- •Задача 18 Свинья-копилка
- •Формат входного файла:
- •Формат выходного файла:
- •Примеры
- •Решение
- •Входные данные:
- •Выходные данные:
- •Формат входа
- •Формат выхода
- •Задача 39 Лесенка-2
- •Входные данные
- •Выходные данные
- •Примеры
- •Системы счисления
- •Задача 11 Троичная сбалансированная система счисления
- •Алгоритм перевода
- •Процедуры и функции для работы с символами и строками
- •Определить количество слов в строке
- •Получите строковой массив из всех слов данной строки
- •Получите строковой массив из всех слов данной строки и
- •Получите строковой массив из всех слов данной строки и
- •Составьте программу, определяющую, является ли введенное слово изображением числа
- •Введите 2 целых числа. Преобразуйте числа в две строки, объедините их в одну строку и выведите результат на экран.
- •Вычислите длину самого короткого и самого длинного слов в строке
- •Подсчитайте количество букв в каждом слове данной строки
- •Дана строка. Определить количество слов этой строки, в которых есть ровно две буквы «е»
- •Составьте программу, удаляющую все лишние пробелы из введенной строки
- •Напишите программу, сортирующую символы введенной с клавиатуры строки в порядке возрастания их номеров в ascii-таблице. Например, если введено: 'cba', в результате надо получить ‘abc’.
- •В тексте, состоящем из маленьких латинских букв , подсчитайте количество гласных букв
- •Заданы фамилия, имя и отчество учащегося, разделенные пробелом. Напечатайте его фамилию и инициалы.
- •Сложное слово состоит из двух частей одинаковой длины и соединительной гласной. Найдите обе части этого слова.
- •Вычеркните из слова х те буквы, которые встречаются в слове z
- •Подсчитайте число различных букв в слове
- •Даны два слова. Составьте программу, определяющую можно или нет из букв слова а составить слово в.
- •Даны два слова. Являются ли они анаграммами
- •Является ли данная строка палиндромом?
- •Задача 4. Сокращение одночленов
- •Входные и выходные данные
- •Это чисто техническая задача на аккуратное программирование.
- •Задача 6 Текст
- •Входной файл Input.Txt в первой строке входного файла находится 5 чисел,разделенных пробелом: n, m, s, t, q.
- •Бинарные деревья. Алгоритм HeapSort
- •Поиск в глубину в графе
- •Алгоритм Флойда поиска кратчайших расстояний и кратчайших путей
- •Бинарные деревья. Алгоритм HeapSort
- •Графызадачи Двоичная куча
- •Примеры задач, которые решаются с помощью двоичной кучи
- •Поиск максимального потока методом Форда-Фалкерсона на Pascal
- •Графызадачи Поиск сильно связанных компонент на Pascal
- •Поиск точек раздела, мостов и двусвязных компонент
- •Идеи алгоритмов
- •Точки раздела
- •Двусвязные компоненты
- •Задача 21 Моя Столица
- •Вычислительная геометрия
- •3. Уравнение прямой 2
- •4. Уравнение прямой проходящей через точку м(х0у0)
- •Формат входного файла
Вычислите длину самого короткого и самого длинного слов в строке
const nmax=100;
var s,sp:string;
i,j,n,kol:integer;
a:array[1..nmax] of string;
begin
assign(input,'input.txt'); reset(input);
assign(output,'output.txt'); rewrite(output);
readln(s);
n:=0;
while length(s)>0 do
begin
sp:='';
while s[1]=' ' do delete(s,1,1);
while (length(s)>0)and(s[1]<>' ') do
begin
sp:=sp+s[1];
delete(s,1,1);
end;
inc(n);
a[n]:=sp;
end;
for i:=1 to n-1 do
for j:=i+1 to n do
if length(a[i])>length(a[j])
then
begin
sp:=a[i];
a[i]:=a[j];
a[j]:=sp;
end;
write(length(a[1]),' ',length(a[n]));
close(input);
close(output);
end.
Подсчитайте количество букв в каждом слове данной строки
const nmax=100;
var s,sp:string;
i,j,n,kol:integer;
a:array[1..nmax] of string;
begin
assign(input,'input.txt'); reset(input);
assign(output,'output.txt'); rewrite(output);
readln(s);
n:=0;
while length(s)>0 do помещаем слова строки в массив
begin
sp:='';
while s[1]=' ' do delete(s,1,1);
while (length(s)>0)and(s[1]<>' ') do
begin
sp:=sp+s[1];
delete(s,1,1);
end;
inc(n);
a[n]:=sp;
end;
for i:=1 to n do выводим длину каждого слова
write(length(a[i]),' ');
close(input);
close(output);
end.
Дана строка. Определить количество слов этой строки, в которых есть ровно две буквы «е»
const nmax=100;
var s,sp:string;
res,i,j,n,kol:integer;
a:array[1..nmax] of string;
begin
assign(input,'input.txt'); reset(input);
assign(output,'output.txt'); rewrite(output);
readln(s);
n:=0;
while length(s)>0 do помещаем слова строки в массив
begin
sp:='';
while s[1]=' ' do delete(s,1,1);
while (length(s)>0)and(s[1]<>' ') do
begin
sp:=sp+s[1];
delete(s,1,1);
end;
inc(n);
a[n]:=sp;
end;
res:=0;
for i:=1 to n do
begin
kol:=0;
for j:=1 to length(a[i]) do подсчитываем количество букв «е»
if a[i][j]='e' then inc(kol); в слове
if kol=2 then inc(res); если букв «е» две, то считаем слово
end;
write(res);
close(input);
close(output);
end.
Составьте программу, удаляющую все лишние пробелы из введенной строки
const nmax=100;
var s,sp:string;
res,i,j,n,kol:integer;
a:array[1..nmax] of string;
begin
assign(input,'input.txt'); reset(input);
assign(output,'output.txt'); rewrite(output);
readln(s);
n:=0;
while length(s)>0 do помещаем слова строки в массив
begin
sp:='';
while s[1]=' ' do delete(s,1,1);
while (length(s)>0)and(s[1]<>' ') do
begin
sp:=sp+s[1];
delete(s,1,1);
end;
inc(n);
a[n]:=sp;
end;
s:='';
for i:=1 to n do собираем слова в строку, помещая
между ними по одному пробелу
s:=s+a[i]+' ';
delete(s,length(s),1); стираем лишний последний пробел
write(s);
close(input);
close(output);
end.
Эту задачу можно решить и не помещая слова строки в массив.
Напишите программу, сортирующую символы введенной с клавиатуры строки в порядке возрастания их номеров в ascii-таблице. Например, если введено: 'cba', в результате надо получить ‘abc’.
const nmax=100;
var s:string;
res,i,j,n,kol:integer;
a:array[1..nmax] of char;
p:char;
begin
assign(input,'input.txt'); reset(input);
assign(output,'output.txt'); rewrite(output);
readln(s);
n:=length(s);
for i:=1 to n-1 do сортируем символы строки
for j:=i+1 to n do
if s[i]>s[j]
then
begin
p:=s[i];
s[i]:=s[j];
s[j]:=p;
end;
write(s);
close(input);
close(output);
end.
