Cerința
Se consideră un vector cu n
elemente numere naturale. Calculați suma sumelor tuturor subsecvențelor ce se pot forma cu elementele vectorului. Pentru că suma poate fi foarte mare, afișați suma modulo 1.000.000.007
.
Date de intrare
Fișierul de intrare easy_sum.in
conține pe prima linie numărul n
, iar pe a doua linie n
numere naturale separate prin spații.
Date de ieșire
Fișierul de ieșire easy_sum.out
va conține pe prima linie numărul S
, reprezentând suma sumelor tuturor subsecvențelor modulo 1.000.000.007
.
Restricții și precizări
1 ≤ n ≤ 100.000
- numerele de pe a doua linie a fișierului de intrare vor fi cuprinse în intervalul
[1,1.000.000]
- prin subsecvență înțelegem orice înșiruire de elemente din vector aflate pe poziții consecutive.
Exemplu
easy_sum.in
3 1 2 3
easy_sum.out
20
Explicație
Subsecvențele formate: {1}
, {2}
, {3}
, {1,2}
, {2,3}
, {1,2,3}
.
Suma sumelor tuturor subsecvențelor este 20
.
#include <bits/stdc++.h> using namespace std; ifstream fin("easy_sum.in"); ofstream fout("easy_sum.out"); int main() { int n; long long x , s = 0; fin>>n; for(int i = 0; i < n; i++) { fin >> x; s = (s + x * (i + 1) % 1000000007 * (n - i) % 1000000007) % 1000000007; } fout << s; return 0; }