1. Главная
  2. Библиотека
  3. Теория вероятностей
  4. Жрецы тайного ордена выстроились в очередь, чтобы покло...
Разбор задачи

Жрецы тайного ордена выстроились в очередь, чтобы поклониться древнему богу. Каждый принёс с собой дар - целое положительное число, высеченное на камне. По преданию, ритуал считается завершённым, если выбрать подряд идущих жрецов (не пустую группу; группа

  • Предмет: Теория вероятностей
  • Автор: Кэмп
  • #Теория вероятностей и математическая статистика
  • #Теория случайных величин
Жрецы тайного ордена выстроились в очередь, чтобы поклониться древнему богу. Каждый принёс с собой дар - целое положительное число, высеченное на камне. По преданию, ритуал считается завершённым, если выбрать подряд идущих жрецов (не пустую группу; группа

Условие:

Жрецы тайного ордена выстроились в очередь, чтобы поклониться древнему богу. Каждый принёс с собой дар - целое положительное число, высеченное на камне.

По преданию, ритуал считается завершённым, если выбрать подряд идущих жрецов (не пустую группу; группа может состоять из одного жреца) так, чтобы сумма их даров делилась на общее количество жрецов - n. Определите, можно ли найти такую группу.

Если такой группы нет, выведите -1 . Если она существует, укажите её начало и конец.

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

Первая строка: одно целое число n(1n105)n\left(1 \leqslant n \leqslant 10^{5}\right) - количество жрецов. Вторая строка: последовательность из n\boldsymbol{n} целых положительных чисел a1,a2,,an\boldsymbol{a}_{1}, \boldsymbol{a}_{2}, \ldots, a_{n} ( 1ai1091 \leqslant a_{i} \leqslant 10^{9} ). Обратите внимание, что значение промежуточных вычислений может превышать возможное значение 32 -битной целочисленной переменной, поэтому необходимо использовать 64-битные целочисленные типы данных (тип int64 в языке Pascal, тип long long в С++, тип long в Java и С#).

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

Если подходящей группы жрецов не существует, выведите -1 . Если группа существует, выведите два целых числа l,r(1lrn)l, r(1 \leqslant l \leqslant r \leqslant n) - номера первого и последнего жрецов в очереди, образующие непрерывную подпоследовательность, сумма в которой делится на nn.

Если решений несколько, можно вывести любое.

Решение:

Наша цель – найти непрерывный отрезок жрецов (то есть подмассив массива целых чисел), сумма подарков которых делится на n (где n – общее количество жрецов). Для этого воспользуемся наблюдением, что если рассмотреть префиксные суммы и их остатки при делении на n, то по принципу Дирихле мы либо получим остаток 0, либо найдём два префикса с одинаковым остатком. Рассмотрим пошагово алгоритм решения:

  1. Пусть дан массив a[1…n]. Определим префиксную сумму S[i] = a[1] + a[2] + … + a[i]. Заметим, что если S[i] делится на n, то подотрезок с 1-го по i-го жреца является искомой группой, п...

Внутри — полный разбор, аргументация, алгоритм решения, частые ошибки и как отвечать на каверзные вопросы препода, если спросит

Попробуй решить по шагам

Попробуй один шаг и продолжи в режиме обучения или посмотри готовое решение

Какой математический принцип лежит в основе эффективного поиска подпоследовательности жрецов, сумма даров которых делится на общее количество жрецов?

Что нужно знать по теме:

Что нужно знать по теме

Алгоритм решения

Топ 3 ошибок

Что спросит препод

Выбери предмет