Перейти к основному содержанию
Боковая панель
Информатикс
Вы используете гостевой доступ (
Вход
)
1534
Общее
Тема 1
Тема 2
Тема 3
Тема 5
Тема 6
Тема 7
Тема 8
Тема 11
В начало
Календарь
Гимназия №1534
В начало
Курсы
Кружки и уроки
Москва
Школа 1534
1534
Тема 6
Две программы на C++ и Pascal
Печатать книгу
Печатать эту главу
Две программы на C++ и Pascal
Две программы
Проверка числа $2 \le N \le 10^{12}$ на простоту
#include <iostream>
using
namespace
std;
bool
isPrime
(
long
long
n
)
{
// Если паскалистам приходится объявлять свои переменные в начале
// каждой процедуры, то сишники могут объявить переменную в любом
// месте кода. Но сделать это надо, конечно, до её использования.
long
long
i =
2
;
bool
flag =
true
;
while
(
i * i <= n && flag
)
{
if
(
n % i ==
0
)
flag =
false
;
i++;
}
return
(
flag || n == i
)
;
}
// В языке С++ весь код лежит в процедурах и функциях. Договорились то,
// с чего должно начинаться исполнение программы, класть в функцию main.
int
main
(
)
{
long
long
n;
cin
>> n;
if
(
isPrime
(
n
)
)
cout
<<
"prime"
<< endl;
else
cout
<<
"composite"
<< endl;
return
0
;
}
{$APPTYPE CONSOLE}
uses
SysUtils;
function
isPrime
(
n: int64
)
:
boolean
;
var
i: int64;
flag:
boolean
;
begin
i :=
2
;
flag :=
true
;
while
(
i * i <= n
)
and
flag
do
begin
if
n
mod
i =
0
then
flag :=
false
;
inc
(
i
)
;
end
;
result := flag or
(
n = i
)
;
end
;
var
n: int64;
begin
read
(
n
)
;
if
isPrime
(
n
)
then
writeln
(
'prime'
)
else
writeln
(
'composite'
)
;
// Паскалисты могут написать здесь exit(0).
end
.
Обход в глубину: дана матрица смежности, подсчитать количество компонент связности
#include <iostream>
using
namespace
std;
const
int
MAXN =
1000
;
int
n, a
[
MAXN
]
[
MAXN
]
, counter =
0
;
bool
visited
[
MAXN
]
;
void
dfs
(
int
v
)
{
visited
[
v
]
=
true
;
for
(
int
i =
0
; i < n; ++i
)
if
(
a
[
v
]
[
i
]
==
1
&& !visited
[
i
]
)
dfs
(
i
)
;
}
int
main
(
)
{
cin
>> n;
for
(
int
i =
0
; i < n; ++i
)
for
(
int
j =
0
; j < n; ++j
)
cin
>> a
[
i
]
[
j
]
;
for
(
int
i =
0
; i < n; ++i
)
visited
[
i
]
=
false
;
for
(
int
i =
0
; i < n; ++i
)
if
(
!visited
[
i
]
)
{
counter++;
dfs
(
i
)
;
}
cout
<<
"Number of connected components: "
<< counter << endl;
return
0
;
}
{$APPTYPE CONSOLE}
uses
SysUtils;
const
MAXN =
1000
;
var
n, counter, i, j:
integer
;
a:
array
[
0
..
MAXN
-
1
,
0
..
MAXN
-
1
]
of
integer
;
visited:
array
[
0
..
MAXN
]
of
boolean
;
procedure
dfs
(
v:
integer
)
;
var
i:
integer
;
begin
visited
[
v
]
:=
true
;
for
i :=
0
to
n -
1
do
if
(
a
[
v
]
[
i
]
=
1
)
and
not
visited
[
i
]
then
dfs
(
i
)
;
end
;
begin
counter :=
0
;
read
(
n
)
;
for
i :=
0
to
n -
1
do
for
j :=
0
to
n -
1
do
read
(
a
[
i
]
[
j
]
)
;
for
i :=
0
to
n -
1
do
visited
[
i
]
:=
false
;
for
i :=
0
to
n -
1
do
if
not
visited
[
i
]
then
begin
inc
(
counter
)
;
dfs
(
i
)
;
end
;
writeln
(
'Number of connected components: '
, counter
)
;
end
.
◄ Тема 29. Максимальный поток и смежные темы
Перейти на...
Перейти на...
Задачи для Ильи Богданова - обход в глубину
Задачи для Ильи Богданова - запросы на отрезках
Московская командная олимпиада — 2012 (дорешивание)
Таблица результатов по темам 0-3
Тема 0: повторяем Питон
Тема 1: квадратичные сортировки
Тема 2: сортировка подсчётом
Тема 3: бинарный поиск
Статья В. М. Гуровица про бинарный поиск
Московская олимпиада, окружной этап, 2008 год
Таблица результатов по темам 4-...
Тема 4: рекурсия
Тема 5: двумерные массивы (сложные задачи)
Тема 6: способы хранения графов
Тема 7: обход в глубину
Тема 8а: динамическое программирование с одним параметром
Тема 8б: динамическое программирование с двумя параметрами
Тема 8в: ещё какое-то динамическое программирование
Тема 9: словари и множества
Теория по множествам (Д. П. Кириенко)
Теория по словарям (Д. П. Кириенко)
Тема 10: обход в ширину
Тема 11: двоичная куча
Задачи для Ани Анохиной
Тема 12: дерево отрезков
Лекции Д. П. Кириенко
Тема 13: геометрия - 1
Доска с лекции по геометрии
Лекции Егорова и Андреевой. Часть 1
Тема 14: поиск кратчайших путей
Программа курса
Записи теоретических кусков
Результаты изучения языка программирования
Результаты изучения алгоритмов и структур данных
Паскаль онлайн
Рекомендуемые правила форматирования кода
Занятие 1: оператор присваивания, div-mod
Занятие 2: if-then-else
Занятие 3: циклы while и repeat
Занятие 4: цикл for
Занятие 5: арифметика
Занятие 5,5: div-mod посложнее
Окружная олимпиада (2010 год)
Занятие 6: одномерные массивы
Занятие 7: работа со строками
Второй отборочный интернет-тур на Московскую олимпиаду для 10-11 классов
Занятие 8: квадратичные сортировки
Флэш-игра для программистов "Light-Bot"
Занятие 9: сортировка подсчётом
Занятие 9,5: системы счисления, битовые операции
Занятие 10: двумерные массивы
Занятие 11: бинарный поиск в массиве и по вещественным числам
Занятие 12: процедуры и функции
Занятие 13: рекурсия
Занятие 14: способы хранения графов
Занятие 15: обход в глубину
Занятие 16: структуры данных "стек" и "очередь"
Занятие 17: обход в ширину
Занятие 18: бинарный поиск по ответу
Занятие 19: динамическое программирование с одним параметром
Занятие 20: динамическое программирование с двумя параметрами
Занятие 21: списки смежности, топологическая сортировка
Занятие 22: арифметика возвращается
Занятие 23: быстрая сортировка
Занятие 24: динамическое программирование - 3
Занятие 26: генерация комбинаторных объектов
Занятие 27: перебор
Занятие 28: поиск кратчайших путей
Занятие 29: геометрия - 1
Занятие 30: геометрия - 2 (уравнение прямой, выпуклая оболочка)
Занятие NN: динамическое программирование::level_up
Контест "вспомнить всё" для Лёши Ивашко
Программа курса
Таблица результатов
Тема 1. Матрица смежности
Тема 2. Обход в глубину
Статья А. П. Лахно про поиск в глубину
Тема 3. Арифметика
Конспект Д. П. Кириенко по теории чисел
Реализация файлового ввода-вывода
Тема 4. Быстрая сортировка
Особенности среды Delphi
Отрывок из Кормена про быструю сортировку
Реализации быстрой сортировки
Лёгкие задачи городского этапа
Тема 5. Бинарный поиск по ответу
Лекция М. С. Густокашина по алгоритмам поиска
Витамины
Тема 6. Обход в ширину
Тема 7. Списки смежности, топологическая сортировка
Реализация вектора на паскале
Тема 7,5. Алгоритм Дейкстры
Тема 8. Комбинаторная генерация
Тема 8,5. Перебор
Тема 9. Геометрия. Введение
И. М. Гельфанд, С. М. Львовский, А. Л. Тоом. Тригонометрия
Лекции Е. В. Андреевой и Ю. Е. Егорова. Часть 1
Демонстрация представления чисел в памяти компьютера
Тема 10. Динамическое программирование с одним параметром
Лекция М. С. Густокашина по одномерной динамике
Тема 11. Динамическое программирование с двумя параметрами
Наибольшая общая подпоследовательность (Википедия)
Редакционное расстояние (Википедия)
Тема 12. Двоичная куча
Список литературы на лето
Тема 13. DFS revisited
Нахождение Эйлерова пути (e-maxx.ru)
Лекция П. Калинина о поиске в глубину
Тема 14. Комбинаторика - 2, скобочные последовательности
Тема 15. Кратчайшие пути
Семинар по алгоритмам на графах (В. А. Матюхин)
Тема 16. Уравнение прямой, выпуклая оболочка
Статья об алгоритмах поиска выпуклой оболочки (с картинками)
Лекции Е. В. Андреевой и Ю. Е. Егорова. Часть 2
Лекции Е. В. Андреевой и Ю. Е. Егорова. Часть 4
Тема 17. Квадродерево
Лекции Е. В. Андреевой и Ю. Е, Егорова. Часть 3 (в параграфе 3.5 написано про квадродерево)
Заметки о дизассемблировании кода на C/C++
Тема 18. Минимальное остовное дерево, система непересекающихся множеств
Тема 19. Запросы на отрезках
RMQ с прибавлением на отрезке. Динамическая структура.
Тема 20. Действия с окружностями
Тема 21. Поиск подстроки в строке
Тема 22. Тернарный поиск
Тема 23. Демоническое программирование
Лекция Б. Василевского о динамическом программировании по профилю
Тема 24. Метод отжига
Статья Д. Ёлкина и А. Тяхти по методу отжига
Тема 25. Сканирующая прямая и два указателя
Тема 26. Хеширование
Статья про хэширование (e-maxx.ru)
Тема 27. Бинарное дерево поиска
Отрывок из Кормена про бинарное дерево поиска
Тема 28. Декартово дерево
Статья про декартово дерево на Хабре (в трёх частях)
Моя реализация декартова дерева (на Джаве)
Тема 29. Максимальный поток и смежные темы
Продвинутые лекции по языку C++
Первый контест по языку C++
Второй контест по языку C++
А. Шень. Математическая индукция
В. А. Успенский. Простейшие примеры математических доказательств
Р. Курант, Г. Роббинс. Что такое математика?
Листок 1. Математическая индукция и принцип Дирихле
Листок 2. Теория чисел
Листок 3. Теория графов
Листок 4. Комбинаторные подсчёты
Таблица результатов
Первый боевой контест
Второй боевой контест
Третий боевой контест
Четвертый боевой контест
Пятый боевой контест
Шестой боевой контест
AI Challenge: игра, в которую рубятся лучшие программисты мира
Седьмой боевой контест
Восьмой боевой контест: стресс-тестирование
Девятый боевой контест
Десятый боевой контест
Одиннадцатый боевой контест
Двенадцатый боевой контест
Тренировка №1 (личный тур)
Задачи первого дня
Задачи второго дня
Задачи третьего дня
Задачи четвёртого дня
Задачи пятого дня
Продвинутые лекции по языку C++ ►