Codeforces Round 141 (Div. 2) |
---|
Закончено |
Придворный волшебник Зигзаг хочет прославиться как великий математик. Для этого ему нужна своя теорема, как у Коши, или своя сумма, как у Минковского. Но больше всего ему хочется иметь свою последовательность, как у Фибоначчи, и свою функцию, как у Эйлера.
Последовательностью Зигзага с коэффициентом зигзаговости z будем называть бесконечную последовательность Siz (i ≥ 1; z ≥ 2), которая определяется следующим образом:
Операция обозначает взятие остатка от деления числа x на число y. Например, начало последовательности Si3 (зигзаговости 3) выглядит так: 1, 2, 3, 2, 1, 2, 3, 2, 1.
Пусть задан массив a, состоящий из n целых чисел. Обозначим элемент номер i (1 ≤ i ≤ n) массива за ai. Функцией Зигзага будем называть функцию: , где l, r, z удовлетворяют неравенствам 1 ≤ l ≤ r ≤ n, z ≥ 2.
Чтобы лучше познакомиться с последовательностью и функцией Зигзага, волшебник Зигзаг предлагает Вам реализовать следующие операции над заданным массивом a.
Познайте магическую силу зигзагов, реализуйте описанные операции.
В первой строке записано целое число n (1 ≤ n ≤ 105) — количество элементов в массиве a. Во второй строке через пробел записаны n целых чисел: a1, a2, ..., an (1 ≤ ai ≤ 109) — элементы массива.
В третьей строке записано целое число m (1 ≤ m ≤ 105) — количество операций. В следующих m строках записаны описания операций. Описание операции начинается с целого числа ti (1 ≤ ti ≤ 2) — типа операции.
Операции необходимо выполнять в том порядке, в котором они заданы во входных данных.
Для каждой операции Зигзага выведите вычисленное значение функции Зигзага в отдельной строке. Значения для операций Зигзага выводите в том порядке, в котором эти операции заданы во входных данных.
Пожалуйста, не используйте спецификатор %lld для чтения или записи 64-х битовых чисел на С++. Рекомендуется использовать потоки cin, cout или спецификатор %I64d.
5
2 3 1 5 5
4
2 2 3 2
2 1 5 3
1 3 5
2 1 5 3
5
26
38
Пояснение к примеру:
Название |
---|