#include <iostream>
using namespace std;
const int Mod = 1e9+7;
const int maxn = 1e5+7;
long long a[maxn] = {0};
int main() {
int T;
cin >> T;
while(T--) {
int n;
cin >> n;
for(int i = 0; i < n; i++) cin >> a[i];
long long x, y, z, ans = 0;
x = y = z = 0;
for(int i = 0; i < n; i++) {
x += a[i];
y += a[i]*a[i];
z += a[i]*a[i]*a[i];
x %= Mod;
y %= Mod;
z %= Mod;
}
ans = (n-4)*z + 3*x*y;
ans %= Mod;
cout << ans << endl;
}
return 0;
}
/*
将(ai+aj)^3拆开,再整理到一起可得结果。
表面上看a[i]<=100000, 但是在计算x时a[i]*a[i]爆了int,我认为计算a*a时将结果存在了一个temp中,而
temp的类型与a[i]相同。
*/
NEUOJ 1176 Problem: Easy to improve
最新推荐文章于 2022-02-12 00:56:13 发布