NEUOJ 1176 Problem: Easy to improve

来源:互联网 发布:飞书互动 知乎 编辑:程序博客网 时间:2024/05/21 22:22
#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]相同。*/