显示原始代码
#include <iostream>
#include <vector>
#include <numeric>
using namespace std;
const int MOD = 1e9 + 7;
int main() {
int n;
cin >> n;
vector<long long> a(n);
for (int i = 0; i < n; ++i) {
cin >> a[i];
}
vector<long long> prefix_sum(n + 1, 0);
vector<long long> suffix_sum(n + 1, 0);
for (int i = 1; i <= n; ++i) prefix_sum[i] = prefix_sum[i - 1] + a[i - 1];
for (int i = n - 1; i >= 0; --i) suffix_sum[i] = suffix_sum[i + 1] + a[i];
vector<long long> prefix_product(n + 1, 1);
vector<long long> suffix_product(n + 1, 1);
for (int i = 1; i <= n; ++i) prefix_product[i] = prefix_product[i - 1] * a[i - 1] % MOD;
for (int i = n - 1; i >= 0; --i) suffix_product[i] = suffix_product[i + 1] * a[i] % MOD;
for (int i = 0; i < n; ++i) {
long long Ai = prefix_sum[i] - suffix_sum[i + 1];
long long Bi = prefix_product[i] * suffix_product[i + 1] % MOD;
cout << Ai << " " << Bi << endl;
}
return 0;
}