Вопрос от Анонимного юзера 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)
Если хочешь, могу привести пошаговый разбор на конкретном примере или адаптировать решение под ваш тестовый формат ввода/вывода.
Понравился ответ?
Задай свой вопрос
Напиши любую задачу или вопрос, а нейросеть её решит



