Problem H: 偷懒的小Y

Problem H: 偷懒的小Y

Time Limit: 2 Sec  Memory Limit: 256 MB
Submit: 0  Solved: 0
[Submit] [Status] [Web Board] [Creator:]

Description

一天小Y由于打游戏不理女朋友导致被女朋友惩罚,要求他站在长方体的一个顶点,从这个顶点走到对立的另一个顶点,可是小Y只知道长方体里最长的那条边的边长,小Y很懒,如果要走到对立的另一个顶点他一定会选择最短的路线来走,假设这条路线是L,小Y想知道所有的可能性的L2的和,注意(4,5,6)和(6,5,4)属于同一种情况的长方体,

Input

输入一个T作为组数,(T<=1000),对每组输入一个n(1<=n<=1014),代表了长方体里最长边的边长。

Output

对每组数据,输出所有可能的L2的和,答案可能会很大,请把答案对1000000007取模。

Sample Input Copy

2
3
4

Sample Output Copy

160
440

HINT

用到的公式给出:

13+23+33+43+53+。。。。+n3= [n(n+1)/2]²

1²+2²+3²+...+n²=n(n+1)(2n+1)/6.

 

Tip:给出逆元函数代码:

/*

typedef long long ll;

const ll mod=1000000007;

ll my_pow(ll ds,ll cf)

{

   ll sum=1;

   while(cf>0)

    {

       if(cf%2==1)

           sum=(sum*ds)%mod;

       ds=(ds*ds)%mod;

       cf/=2;

    }

   return sum;

}

ll inv(ll x)

{

   return my_pow(x,mod-2);

}

*/

(a/b) mod c =a*inv(b).

(a * b) mod c =((a mod c)* (b mod c)) mod c
mod 
代表取模。