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