- •Оценка эффективности алгоритмов
- •Целочисленная арифметика
- •Дано натуральное число. Выяснить является ли оно палиндромом, то есть читается справа налево и слева направо одинаково
- •Дано натуральное число. Выяснить соотношение между количествами двоек и пятерок в этом числе
- •Найти самую большую и самую маленькую цифры данного натурального числа
- •Выяснить образуют ли цифры натурального числа возрастающую последовательность
- •Формат выходного файла
- •Формат входного файла
- •Формат выходного файла
- •Формат входного файла
- •Формат входного файла
- •Формат выходного файла
- •Длинная арифметика
- •Выходные данные
- •Задачи Задача 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: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);
kol:=0;
while not eof do пока не дошли до конца файла
begin
readln(s); считываем строку
for i:=1 to length(s) do бежим по строке
if s[i] in ['a','e','u','i','j'] если символ является гласной, то
then inc(kol); считаем его
end;
write(kol);
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;
write(a[1],' '); выводим результат
write(a[2][1],' ');
write(a[3][1]);
close(input);
close(output);
end.
Сложное слово состоит из двух частей одинаковой длины и соединительной гласной. Найдите обе части этого слова.
var s,s1,s2:string;
n:integer;
begin
assign(input,'input.txt'); reset(input);
assign(output,'output.txt'); rewrite(output);
readln(s);
n:= length(s) div 2;
s1:=copy(s,1,n); копируем первую половину строки в s1
s2:=copy(s,n+2,n); копируем первую половину строки в s2
write(s1,' ');
write(s2,' ');
close(input);
close(output);
end.
Вычеркните из слова х те буквы, которые встречаются в слове z
var z,x:string;
n,i:integer;
begin
assign(input,'input.txt'); reset(input);
assign(output,'output.txt'); rewrite(output);
readln(x);
readln(z);
n:=length(z);
for i:=1 to n do
begin
if pos(z[i],x)>0 если буква из Z есть в X
then delete(x,pos(z[i],x),1); стираем ее
end;
write(x);
close(input);
close(output);
end.
Подсчитайте число различных букв в слове
const nmax=255;
var a:array[1..nmax] of byte;
s:string;
n,i,kol:integer;
begin
assign(input,'input.txt'); reset(input);
assign(output,'output.txt'); rewrite(output);
fillchar(a,sizeof(a),0);
readln(s);
n:=length(s);
for i:=1 to n do используем косвенную адресацию
inc(a[ord(s[i])]);
for i:=1 to 255 do бежим по массиву
if a[i]<>0 then inc(kol); если буква встретилась, то считаем ее
write(kol);
close(input);
close(output);
end.
Даны два слова. Составьте программу, определяющую можно или нет из букв слова а составить слово в.
const nmax=255;
var a,b:array[1..nmax] of byte;
s,s1:string;
n,i,kol:integer;
begin
assign(input,'input.txt'); reset(input);
assign(output,'output.txt'); rewrite(output);
fillchar(a,sizeof(a),0);
kol:=0;
readln(s);
readln(s1);
n:=length(s);
for i:=1 to n do используем косвенную адресацию
inc(a[ord(s[i])]); считаем буквы слова А и помещаем в массив
n:=length(s1);
for i:=1 to n do вычитаем из соответствующих элементов массива а по
единице для каждой буквы слова В
dec(a[ord(s1[i])]);
for i:=1 to 255 do считаем количество отрицательных элементов
массива а
if a[i]<0 then inc(kol);
if kol>0 then если каких-то букв в слове В больше чем в А или
write('NO') в слове А их вообще нет, то выводим «NO»
else write('YES');
close(input);
close(output);
end.
