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;
}哲哥有空看看这题...这个代码错了,,我也不知道哪错了..

京公网安备 11010502036488号