https://vjudge.net/contest/409076#problem/G

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=1e9+7;
ll qp(ll a,ll b)
{
    ll res=1;
    while(b)
    {
        if(b&1) res=res*a%mod;
        a=a*a%mod;
        b>>=1;
    }return res;
}

ll cnt1(ll a)//对i^2求和.
{
    return a*(a+1)%mod*(2*a+1)*qp(6,mod-2)%mod;
}

ll cnt2(ll a)//对i求和
{
    return (1+a)*a%mod*qp(2,mod-2)%mod;
}
int main()
{
    int T;
    cin>>T;
    while(T--)
    {
        ll x,y,z,n;
        scanf("%lld",&n);
        //x=((n*(n+1)%mod*((2*n+1)%mod)%mod*qp(6,mod-2)%mod+(1+n)*n*qp(2,mod-2))*(qp(2,mod-2)))%mod;
        x=(cnt1(n)+cnt2(n))/2//正三角形.
        if(n>1)
        {
            y=(n/2)*((n*n%mod+3*n%mod+2+4ll*(cnt1(n/2))%mod-(6ll+4ll*n)%mod*cnt2(n/2)%mod+mod))%mod*qp(2ll,mod-2ll)%mod;//反三角形.
        }
        else    y=0;
        if(n>2) z=(n*qp(3ll,mod-2ll)%mod)*((n*n%mod+3*n%mod+2-(6*n+9)%mod*cnt2(n/3)%mod+9*cnt1(n/3)%mod)%mod+mod)%mod;//斜三角形.
        else z=0;
        printf("%lld\n",(x+y+z)%mod);
    }
    return 0;
}

哲哥有空看看这题...这个代码错了,,我也不知道哪错了..