Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Необходимо реализовать класс PrimeNumberGenerator
— генератор
простых чисел.
У класса должен быть конструктор,
принимающий (int start
), и функция int GetNextPrime()
,
возвращающая ближайшее справа от start
-а простое число (включая start
).
Функция GetNextPrime
должна изменять состояние объекта — при повторном
ее вызове нужно возвращать уже следующее простое число.
class PrimeNumberGenerator {
public:
explicit PrimeNumberGenerator(int start);
int GetNextPrime();
};
Файл с решением должен содержать только реализацию описанного
класса, без функции main
.
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Реализовать класс Date
со следующими методами:
Конструктор Date(int year, int month, int day)
Метод bool IsLeap() const
, возвращающий true
в случае, если год является високосным и false
в противном случае.
Метод std::string ToString() const
, возвращающий строковое представление даты в формате dd.mm.yyyy
.
Метод Date DaysLater(int days) const
, возвращающий дату, которая наступит спустя days
дней от текущей.
Метод int DaysLeft(const Date& date) const
, возвращающий разницу между указанной и текущей датой (в днях).
Файл с решением должен содержать только реализацию описанного класса, без функции main.
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Необходимо реализовать Set
— класс,
в котором реализованы основные операции над множествами:
Set Union(const Set&) const
,
Set Intersection(const Set&) const
,
Set Difference(const Set&) const
,
Set SymmetricDifference(const Set&) const
.
Также необходимо
реализовать конструктор Set(const std::vector
и функции добавления, удаления и проверки
наличия элемента во множестве:
void Add(int64_t)
,
void Remove(int64_t)
, bool Contains(int64_t) const
.
Для доступа ко всем элементам множества реализовать функцию std::vector
.
Предполагается, что класс будет использован для хранения целых чисел типа int64_t
. Для хранения элементов
следует использовать std::vector
с соответствующим параметром шаблона.
Файл с решением должен содержать только реализацию описанного класса, без функции main.
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Требуется реализовать класс BufferedReader
со следующим интерфейсом:
class BufferedReader {
public:
explicit BufferedReader(PackageStream* stream);
int32_t Read(char* output_buffer, int32_t buffer_len);
};
В конструктор BufferedReader
передается указатель на объект класса PackageStream
(см. описание ниже), с помощью которого будут считываться пакеты некоторой длины.
Метод int32_t Read(char* output_buffer, int32_t buffer_len)
записывает по указателю output_buffer
пакет длины не более buffer_len
и возвращает реальный размер записанного пакета (это число может быть меньше, чем заданная длина, если строка закончилась раньше).
Интерфейс класса PackageStream
:
class PackageStream {
public:
PackageStream(std::string source, int32_t package_len);
int32_t PackageLen() const;
int32_t ReadPackage(char* output_package);
};
В конструктор PackageStream
передается строка source
, из которой впоследствии побайтово будут считываться пакеты длины package_len
и, собственно, длина пакетов package_len
.
Метод int32_t PackageLen()
возвращает длину пакета (package_len
), который считывает метод ReadPackage
.
Метод int32_t ReadPackage(char* output_package)
записывает по указателю output_package
пакет длины не более package_len
и возвращает реальный размер записанного пакета.
Файл с решением должен содержать только реализацию описанного класса, без функции main.