Предмет: Информатика, автор: lollypop2021

Задачка на питоне , помогите решить)

Приложения:

Ответы

Автор ответа: gaga04
0

n = int(input())

a = [int(i) for i in input().split()]

pos = [0] + [-1] * (n - 1)

prefSum = 0

for i in range(n):

   prefSum = (prefSum + a[i]) % n

   if (pos[prefSum] != -1):

       print(pos[prefSum] + 1, i + 1)

       exit()

   pos[prefSum] = i

print("-1 -1")

Надеюсь, такое сможет пройти). Идея в том, что мы считываем массив и идём по всем i є [1; n] ([0; n - 1] в 0-индексации), параллельно добавляя текущий элемент массива (a[i]) к префикс-сумме (к сумме от начала массива до текущего элемента (далее - S[i])). Массив pos состоит из таких элементов, что pos[x] равен последнему из на данный момент рассмотренных индексов (j<i), что S[j] по модулю n дает остаток х. Идя по данному массиву, мы заполняем этот массив. Если в какой-то момент мы узнаем о существовании таких элементов х и у (x < y), что S[x] % n = S[y] % n, то мы получаем следующее:

S[x] % n = S[y] % n

S[y] % n - S[x] % n = 0

(S[y] - S[x]) % n = 0

((a[0] + a[1] + ... + a[x - 1] + a[x] + a[x + 1] + ... + a[y])  - (a[0] + a[1] + ... + a[x])) % n = 0

(a[x + 1] + a[x + 2] + ... + a[y]) % n = 0, а подобный массив нам и нужен.


gaga04: извиняюсь, отступы в коде съехали немного
gaga04: уже вроде исправил
Похожие вопросы
Предмет: История, автор: Denis25624
Тест по теме «Крестовые походы»
1. Почему начались Крестовые походы?
А) стремление освободить Святую землю Б) стремление ближе узнать Восток и его страны В) стремление открыть новые пути торговли Г) стремление расширить владения Папы Римского
2. Что пообещал папа Урбан II европейцам в 1095 году, чтобы призвать их отправиться на Восток?
А) обогащение Б) земли В) спасение души от всех грехов
3. Кто участвовал в Крестовых походах?
А) крестьяне Б) горожане В) рыцари Г) верно все перечисленное
4. Как называлось главное государство крестоносцев на Востоке?
А) Иерусалимское королевство Б) Тевтонское королевство В) Тамплиерское королевство Г) Ливонский орден
5. В каком году крестоносцы захватили Константинополь?
А) 1201 г. Б) 1202 г. В) 1204 г. Г) 1203 г.
6. Как называется организация монахов и рыцарей со своими целями и правилами поведения?
А) орден Б) союз В) партия Г) капитула
7. Чем закончились все Крестовые походы?
А) подписанием мирного договора Б) восток стал принадлежать Западу
В) Восток остался в руках мусульман Г) католическая церковь перестала существовать
8. Сколько было самых важных крестовых походов?
А) 5 Б) 6 В) 7 Г) 8
9. Когда закончились крестовые походы?
А) конец 11 века Б) конец 12 века В) конец 13 века Г) конец 10 века