Задача A. PrimeNumberGenerator

Входной файл:Стандартный вход   Ограничение времени:1 сек
Выходной файл:Стандартный выход   Ограничение памяти:512 Мб

Условие

Необходимо реализовать класс PrimeNumberGenerator — генератор простых чисел.

У класса должен быть конструктор, принимающий (int start), и функция int GetNextPrime(), возвращающая ближайшее справа от start-а простое число (включая start).

Функция GetNextPrime должна изменять состояние объекта — при повторном ее вызове нужно возвращать уже следующее простое число.

      
         
class PrimeNumberGenerator {
  public:
    explicit PrimeNumberGenerator(int start);
    int GetNextPrime();
};
      
  

Материалы задачи

main.cpp

task.xml

Формат выходных данных

Файл с решением должен содержать только реализацию описанного класса, без функции main.


Задача B. Date

Входной файл:Стандартный вход   Ограничение времени: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.cpp

task.xml

Формат выходных данных

Файл с решением должен содержать только реализацию описанного класса, без функции main.


Problem C. Finite Field (Easy version)

Input file:Standard input   Time limit:5 sec
Output file:Standard output   Memory limit:512 Mb

Statement

You are to create .cpp file with implementation of num.h

Constructor of Num should store value modulo modulo. By default, modulo is equal to 0. In that case modulo operation should not be applied to value.

Copy constructor should only copy value value. modulo must be set to zero in copy constructor.

Materials

main.cpp

task.xml

num.h


Problem D. Set

Input file:Standard input   Time limit:1 sec
Output file:Standard output   Memory limit:512 Mb

Statement

You are to implement class Set in which the basic operations on sets are implemented:

Set Union(const Set&) const,

Set Intersection(const Set&) const,

Set Difference(const Set&) const,

Set SymmetricDifference(const Set&) const.

It is also necessary to implement a constructor Set(const std::vector&) and functions for adding, removing and checking the presence of an element in the set:

void Add(int64_t),

void Remove(int64_t), bool Contains(int64_t) const.

Also, implement the method std::vector Data() const that will be used to access the elements of the set.

The class is supposed to be used to store integers of type int64_t. For storing items you should use std::vector with the appropriate template parameter

Materials

main.cpp

task.xml

Output format

The file with the solution must contain only the implementation of the described class, without a main


Problem E. Finite Field (Hard version)

Input file:Standard input   Time limit:5 sec
Output file:Standard output   Memory limit:512 Mb

Statement

You are to create .cpp file with implementation of num.h

Materials

main.cpp

task.xml

num.h


Задача F. BufferedReader

Входной файл:Стандартный вход   Ограничение времени: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.cpp

task.xml

01.in

02.in

03.in

04.in

01.out

02.out

03.out

04.out

Формат выходных данных

Файл с решением должен содержать только реализацию описанного класса, без функции main.


0.492s 0.016s 71