Description
f(n)=1^2+2^2+3^2+......+n^2
求F(n)=f(n)%1007
Input
输入数据有多组(不超过100组),每组一个数n. (1<=n <=1,000,000,000).
Output
输出f(n)对1007取余的值。
Sample Input
3
4
100
Sample Output
14
30
1005
/*
f(n)=1/6n(n+1)(2n+1)
(ab)%c=((a%c)*(b%c))%c
*/
#include <bits/stdc++.h>
using namespace std;
int main()
{
long long n,ans,t1,t2;
while(cin>>n)
{
t2=2*n+1;
t1=n*(n+1)/2;//n*(n+1)可以整除2
if(t1%3==0)
t1=t1/3;
else
t2=t2/3;
ans=((t1%1007)*(t2%1007))%1007;
cout<<ans<<endl;
}
return 0;
}