Бесплатный урок с нашим репетитором!

Узнать подробнее

Новая Школа - онлайн-школа подготовки к ЕГЭ
При поддержке
Посмотреть все вопросы нейросети
Бесплатный пробный урок с репетитором

Узнай больше про репетиторов Новой Школы и запишись на бесплатный пробный урок. Мы проверим твой уровень знаний и составим план обучения по любому предмету и классу

Вопрос от Анонимного юзера 10 сентября 2025 12:05

Реши на c++ и python

Ответ нейросети

10 сентября 2025 12:05

Задача понятна. Нужно после каждой i-й итерации вывести сумму квадратов всех текущих параметров a_j^(i) по модулю 1e9+7, где a_j^(i) = x_j + x_{j+1} + ... + x_i для j ≤ i, а остальные параметры равны 0.

Постановка и вывод:

  • В i-й итерации первые i параметров обновляются на x_i: a_j^(i) = a_j^(i-1) + x_i (для j ≤ i-1), a_i^(i) = x_i.
  • Сумма квадратов S_i = sum_{j=1..i} (a_j^(i))^2.

Разбор обновления:

  • Пусть S_{i-1} = sum_{j=1..i-1} (a_j^(i-1))^2 и P_{i-1} = sum_{t=1}^{i-1} t * x_t.
  • Тогда sum_{j=1..i-1} a_j^(i-1) = P_{i-1}.
  • После добавления x_i: S_i = sum_{j=1..i-1} (a_j^(i-1) + x_i)^2 + x_i^2 = S_{i-1} + 2x_iP_{i-1} + i*x_i^2.
  • Обновляем P_i = P_{i-1} + i*x_i.
  • Инициализируем S_0 = 0, P_0 = 0.

Алгоритм работает за O(n) времени и O(1) памяти.

Код на C++ (GNU++17):

#include <bits/stdc++.h>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n;
    if (!(cin >> n)) return 0;
    const long long MOD = 1000000007LL;

    long long S = 0; // S_i
    long long P = 0; // P_{i-1} = sum_{t=1}^{i-1} t * x_t

    for (int i = 1; i <= n; ++i) {
        long long x;
        cin >> x;
        x %= MOD;
        if (x < 0) x += MOD;

        long long add1 = (2LL * x) % MOD;
        add1 = (add1 * P) % MOD;          // 2 * x_i * P_{i-1}
        long long add2 = ( (long long)i % MOD ) * ( (x * x) % MOD ) % MOD; // i * x_i^2

        S = (S + add1 + add2) % MOD;

        P = (P + ( (long long)i % MOD ) * x) % MOD; // обновление P_i

        cout << S << "\n";
    }

    return 0;
}

Код на Python 3:

import sys

MOD = 10**9 + 7

def main():
    data = list(map(int, sys.stdin.read().strip().split()))
    if not data:
        return
    n = data[0]
    xs = data[1:]

    S = 0  # S_i
    P = 0  # P_{i-1}

    out = []
    for i in range(1, n + 1):
        x = xs[i-1] % MOD
        if x < 0:
            x += MOD

        add1 = (2 * x) % MOD
        add1 = (add1 * P) % MOD  # 2 * x_i * P_{i-1}
        add2 = (i * (x * x % MOD)) % MOD  # i * x_i^2

        S = (S + add1 + add2) % MOD
        P = (P + i * x) % MOD

        out.append(str(S))

    sys.stdout.write("\n".join(out))

if __name__ == "__main__":
    main()

Пояснение по сложности:

  • Время: O(n)
  • Память: O(1)

Если хочешь, могу привести пошаговый разбор на конкретном примере или адаптировать решение под ваш тестовый формат ввода/вывода.

Задай свой вопрос

Напиши любую задачу или вопрос, а нейросеть её решит

Похожие вопросы 15

Бесплатно Мобильное приложение ГДЗ
Мобильное приложение ГДЗ

Задавай вопросы искуcственному интеллекту текстом или фотографиями в приложении на iPhone или Android

qr-codegoogle-playapp-store

Саша — ассистент в телеграмме

Реши на c++ и python
Задача понятна. Нужно после каждой i-й итерации вывести сумму квадратов всех текущих параметров a_j^(i) по модулю 1e9+7, где a_j^(i) = x_j + x_{j+1} + ... + x_i для j ≤ i, а остальные параметры равны 0. Постановка и вывод: - В i-й итерации первые i параметров обновляются на x_i: a_j^(i) = a_j^(i-1) + x_i (для j ≤ i-1), a_i^(i) = x_i. - Сумма квадратов S_i = sum_{j=1..i} (a_j^(i))^2. Разбор обновления: - Пусть S_{i-1} = sum_{j=1..i-1} (a_j^(i-1))^2 и P_{i-1} = sum_{t=1}^{i-1} t * x_t. - Тогда sum_{j=1..i-1} a_j^(i-1) = P_{i-1}. - После добавления x_i: S_i = sum_{j=1..i-1} (a_j^(i-1) + x_i)^2 + x_i^2 = S_{i-1} + 2*x_i*P_{i-1} + i*x_i^2. - Обновляем P_i = P_{i-1} + i*x_i. - Инициализируем S_0 = 0, P_0 = 0. Алгоритм работает за O(n) времени и O(1) памяти. Код на C++ (GNU++17): ```cpp #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n; if (!(cin >> n)) return 0; const long long MOD = 1000000007LL; long long S = 0; // S_i long long P = 0; // P_{i-1} = sum_{t=1}^{i-1} t * x_t for (int i = 1; i <= n; ++i) { long long x; cin >> x; x %= MOD; if (x < 0) x += MOD; long long add1 = (2LL * x) % MOD; add1 = (add1 * P) % MOD; // 2 * x_i * P_{i-1} long long add2 = ( (long long)i % MOD ) * ( (x * x) % MOD ) % MOD; // i * x_i^2 S = (S + add1 + add2) % MOD; P = (P + ( (long long)i % MOD ) * x) % MOD; // обновление P_i cout << S << "\n"; } return 0; } ``` Код на Python 3: ```python import sys MOD = 10**9 + 7 def main(): data = list(map(int, sys.stdin.read().strip().split())) if not data: return n = data[0] xs = data[1:] S = 0 # S_i P = 0 # P_{i-1} out = [] for i in range(1, n + 1): x = xs[i-1] % MOD if x < 0: x += MOD add1 = (2 * x) % MOD add1 = (add1 * P) % MOD # 2 * x_i * P_{i-1} add2 = (i * (x * x % MOD)) % MOD # i * x_i^2 S = (S + add1 + add2) % MOD P = (P + i * x) % MOD out.append(str(S)) sys.stdout.write("\n".join(out)) if __name__ == "__main__": main() ``` Пояснение по сложности: - Время: O(n) - Память: O(1) Если хочешь, могу привести пошаговый разбор на конкретном примере или адаптировать решение под ваш тестовый формат ввода/вывода.