Входной файл: | Стандартный вход | Ограничение времени: | 5 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 600 Мб |
Необходимо реализовать класс PrimeNumberGenerator
— генератор простых чисел
У класса должен быть конструктор, принимающий start
, и функция GetNextPrime
,
возвращающая ближайшее справа от start
-а простое число (включая start
)
Функция GetNextPrime
должна изменять состояние объекта — при повторном ее вызове нужно возвращать уже следующее простое число
public class PrimeNumberGenerator
{
PrimeNumberGenerator(int start) { ... }
int GetNextPrime() { ... }
}
Файл с решением должен содержать только реализацию описанного класса
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Необходимо реализовать класс Num
У класса должны быть:
Конструктор принимающий value
и modulo
При этом если modulo == 0
, value
сохраняется без изменений, иначе value
берется по модулю modulo
Конструктор копирования, который копирует только value
, при этом modulo = 0
Функция-геттер getValue
возвращающая value
Функция-геттер getModulo
возвращающая modulo
public class Num
{
Num(int value, int modulo) { ... }
Num(Num num) { ... }
int getModulo() { ... }
int getValue() { ... }
}
Файл с решением должен содержать только реализацию описанного класса
Входной файл: | Стандартный вход | Ограничение времени: | 1 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Необходимо реализовать класс Num
У класса должны быть:
Конструктор принимающий value
и modulo
При этом если modulo == 0
, value
сохраняется без изменений, иначе value
берется по модулю modulo
Конструктор копирования, копирующий оба поля
Функция Num plus(Num rhs)
складывающая 2 числа, modulo
результата при этом равно максимальному
Функция Num plus(int rhs)
складывающая 2 числа, modulo
результата при этом равно this.modulo
Функции разности: Num minus(Num rhs)
, Num minus(int rhs)
, результаты аналогично сложению
Функции умножения: Num mult(Num rhs)
, Num mult(int rhs)
, результаты аналогично сложению
Функция-геттер getValue
возвращающая value
Функция-геттер getModulo
возвращающая modulo
При всех операциях value
берется по модулю modulo
public class Num
{
Num(int value, int modulo) { ... }
Num(Num num) { ... }
Num plus(Num rhs) { ... }
Num plus(int rhs) { ... }
Num mult(Num rhs) { ... }
Num mult(int rhs) { ... }
Num minus(Num rhs) { ... }
Num minus(int rhs) { ... }
int getModulo() { ... }
int getValue() { ... }
}
Пример теста
Num a = new Num(5, 10);
Num b = new Num(4, 15);
Num c = a.mult(b);
Num d = c.mult(5);
req(c.getValue() == 5);
req(c.getModulo() == 15);
req(d.getValue() == 10);
req(d.getModulo() == 15)
Файл с решением должен содержать только реализацию описанного класса
Входной файл: | Стандартный вход | Ограничение времени: | 4 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
С помощью Java Stream API
реализовать скалярное произведение двух векторов a(a1, a2, ..., ai, ..., aN) и b(b1, b2, ..., bi, ..., bN), используя следующий класс:
import java.math.*;
import java.util.*;
import java.util.stream.*;
public class Solution
{
public static Optional<BigInteger> dot(Stream<Long> a, Stream<Long> b)
{
// Ваш код
}
}
На вход вашей функции подаются два Stream
целых чисел.
Код решения должен содержать только класс Solution
с реализацией функции dot
. Он не должен ничего выводить.
1 ≤ N ≤ 106
− 107 ≤ ai ≤ 107
− 107 ≤ bi ≤ 107
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 3 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
На соревнованиях по робототехнике участвует M команд, состоящих из одинакового количества человек P.
Каждый участник команды ответственен в определенной компетенции и может получить от 1 до N баллов.
После проведения соревнования пришло время подсчета баллов команд.
Итоговый балл команды рассчитывается как среднее арифметическое по всем компетенциям.
Для автоматизации этого процесса вам требуется написать функцию на Java
, принимающую размер команд и поток строк - участник и количество набранных им баллов, и возвращающую поток вещественных чисел - среднее арифметическое в каждой команде.
При решении задачи воспользуйтесь Java Stream API
и следующим классом:
import java.util.*;
import java.util.stream.*;
public class Solution
{
public static Stream<Double> average(int count, Stream<String> data)
{
// Ваш код
}
}
На вход вашей функции подается Stream
строк, каждая из которых имеет следующий формат:
[Имя участника] [Количество баллов]
Участники, относящиеся к одной команде, идут последовательно во входном потоке.
За одной командой следует следующая.
Код решения должен содержать только класс Solution
с реализацией функции average
. Он не должен ничего выводить.
1 ≤ M ≤ 103
1 ≤ P ≤ 104
1 ≤ N ≤ 106
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 4 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 512 Мб |
Николай участвует в выборах президента студенческого совета.
По результатам предварительного голосования он занимает место N + 1.
Пользуясь личными связями, он получил информацию о том, сколько каждый из кандидатов набрал голосов.
Теперь он хочет выяснить, кто обошел его и занимает позицию N.
Вам необходимо реализовать функцию max(n, lines)
, которая по заданному числу N и информации о кандидатах, вернет имена тех, кто занимает позицию N в рейтинге, составленному по убыванию количества проголосовавших.
Стоит заметить, что несколько кандидатов могут набрать одинаковое количество голосов.
При решении задачи используйте Java Stream API
и следующий класс:
import java.util.*;
import java.util.stream.*;
public class Solution
{
public static Stream<String> max(int n, Stream<String> lines)
{
// Ваш код
}
}
На вход вашей функции подается целое число N и Stream
строк, каждая из которых имеет следующий формат:
[Имя кандидата] [Количество проголосовавших]
Код решения должен содержать только класс Solution
с реализацией функции max
. Он не должен ничего выводить.
Выходной поток Stream
должен быть отсортирован в лексикографическом порядке по возрастанию.
1 ≤ N ≤ 106
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
Входной файл: | Стандартный вход | Ограничение времени: | 2 сек | |
Выходной файл: | Стандартный выход | Ограничение памяти: | 128 Мб |
Одной из классических задач при работе с текстом является частотный анализ.
Используя Java Stream API
, составьте "рейтинг" слов исходного текста по их количеству в тексте (по убыванию) и верните первые N позиций.
Слова, встречающиеся одинаковое количество раз, должны быть отсортированы лексикографически.
При решении задачи используйте следующий класс:
import java.util.*;
import java.util.stream.*;
public class Solution
{
public static Stream<String> rate(int n, Stream<String> data)
{
// Ваш код
}
}
На вход вашей функции подается Stream
слов, которые вместе представляют анализируемый вами текст
Все слова преобразованы к нижнему регистру.
Код решения должен содержать только класс Solution
с реализацией функции rate
. Он не должен ничего выводить.
Каждая строка выходного потока должна быть отформатирована в следующем виде:
[слово] [количество]
1 ≤ N ≤ 100
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|