显示原始代码
#include <iostream>
#include <vector>
#include <numeric>
using namespace std;
const int MOD = 1e9 + 7;
long long mod_pow(long long base, long long exp, long long mod) {
long long result = 1;
while (exp > 0) {
if (exp % 2 == 1) {
result = (result * base) % mod;
}
base = (base * base) % mod;
exp /= 2;
}
return result;
}
int main() {
int n;
cin >> n;
vector<int> a(n);
for (int i = 0; i < n; ++i) {
cin >> a[i];
}
vector<long long> pre(n, 0), suf(n, 0);
for (int i = 1; i < n; ++i) {
pre[i] = pre[i - 1] + a[i - 1];
}
for (int i = n - 2; i >= 0; --i) {
suf[i] = suf[i + 1] + a[i + 1];
}
long long total = 1;
for (int i = 0; i < n; ++i) {
total = (total * a[i]) % MOD;
}
for (int i = 0; i < n; ++i) {
long long A_i = pre[i] - suf[i];
long long B_i = (total * mod_pow(a[i], MOD - 2, MOD)) % MOD;
cout << A_i << " " << B_i << endl;
}
return 0;
}