- •Оценка эффективности алгоритмов
- •Целочисленная арифметика
- •Дано натуральное число. Выяснить является ли оно палиндромом, то есть читается справа налево и слева направо одинаково
- •Дано натуральное число. Выяснить соотношение между количествами двоек и пятерок в этом числе
- •Найти самую большую и самую маленькую цифры данного натурального числа
- •Выяснить образуют ли цифры натурального числа возрастающую последовательность
- •Формат выходного файла
- •Формат входного файла
- •Формат выходного файла
- •Формат входного файла
- •Формат входного файла
- •Формат выходного файла
- •Длинная арифметика
- •Выходные данные
- •Задачи Задача 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)
- •Формат входного файла
Задача 11 Троичная сбалансированная система счисления
Троичная
сбалансированная система счисления —
это нестандартная позиционная система
счисления. Основание системы равно
,
однако она отличается от обычной троичной
системы тем, что цифрами являются
.
Поскольку использовать
для
одной цифры очень неудобно, то обычно
принимают какое-то специальное
обозначение. Условимся здесь обозначать
минус единицу буквой
.
Например,
число
в
троичной сбалансированной системе
записывается как
,
а число
—
как
.
Троичная сбалансированная система
счисления позволяет записывать
отрицательные числа без записи отдельного
знака "минус". Троичная сбалансированная
система позволяет дробные числа
(например,
записывается
как
).
Алгоритм перевода
Научимся переводить числа в троичную сбалансированную систему.
Для этого надо сначала перевести число в троичную систему.
Ясно,
что теперь нам надо избавиться от цифр
,
для чего заметим, что
,
т.е. мы можем заменить двойку в текущем
разряде на
,
при этом увеличив следующий (т.е. слева
от него в естественной записи) разряд
на
.
Если мы будем двигаться по записи справа
налево и выполнять вышеописанную
операцию (при этом в каких-то разрядах
может происходить переполнение больше
,
в таком случае, естественно, "сбрасываем"
лишние тройки в старший разряд), то
придём к троичной сбалансированной
записи. Как нетрудно убедиться, то же
самое правило верно и для дробных чисел.
Более
изящно вышеописанную процедуру можно
описать так. Мы берём число в троичной
системе счисления, прибавляем к нему
бесконечное число
,
а затем от каждого разряда результата
отнимаем единицу (уже безо всяких
переносов).
Зная теперь алгоритм перевода из обычной троичной системы в сбалансированную, легко можно реализовать операции сложения, вычитания и деления — просто сводя их к соответствующим операциям над троичными несбалансированными числами.
системысчислениязадачи
К оглавлению
Строки
Опр. Строка – последовательность (цепочка) символов.
Для строк, как и для символьных данных, применимы операция объединения строк (конкатенация) и операции сравнения. Из двух символов больше тот, у которого больше код в таблице кодов ASCII. При сравнении двух строк сравниваются последовательно символы этих строк, начиная с первого. Если символы, стоящие на одном и том же месте не совпадают, то больше та строка, у которой больше код символа. Если все символы первой строки совпадают с первыми символами второй строки и вторая строка имеет большую длину, чем первая, то вторая строка больше.
Объявление строк:
var S : string ; строка длиной 255 cимволов.
var S : string [10] ; строка заданной длины 10.
При объявлении используются и другие разделы (type и const).
Пример:
const Month0 : string [10] = ‘January’; типизированная константа Month0 type Month : string [10] ; тип пользователя Month var Mon1, Mon2 : Month ;
Day_of_week : string [12] ; длина строки не более 12 символов
S:string; длина строки не более 255 символов
Обращение к символу строки – S [i], где S- имя строки, i-номер символа. Нумерация символов в строке начинается с 1 (в S[0] помещается длина строки, то есть length(s)=s[0]).
Пустая строка S:=’’; имеет длину равную нулю.
