[description
]
输入T和T个n
求出
[sum_{i=1}^{n}sum_{j=1}^{i}j^3
]
[solution
]
结论:
对于任意一个
[f(n)=sum_{i=1}^{n}i^3 (nin N^* )
]
满足
[f(n)=frac{n^2(n+1)^2}{4}
]
证明:
当(n=1)时,
[sum_{i=1}^ni^3=1^3=frac {1^2 imes2^2}{4}
]
显然成立
设当(k=n)时成立
则 (sum_{i=1}^ki^3=frac{k^2(k+1)^2}{4})成立
此时
[1^3+2^3+...+k^3=frac{k^2(k+1)^2}{4}
]
[1^3+2^3+...+k^3+(k+1)^3=frac{k^2(k+1)^2}{4}+(k+1)^3
]
[1^3+2^3+...+k^3+(k+1)^3=frac{k^2(k+1)^2+4(k+1)^3}{4}
]
[1^3+2^3+...+k^3+(k+1)^3=frac{(k^2+4k+4)(k+1)^2}{4}
]
[1^3+2^3+...+k^3+(k+1)^3=frac{ (k+2)^2 (k+1)^2}{4}
]
所以此时(k+1=n)成立
所以
[f(n)=sum_{i=1}^{n}i^3=frac{n^2(n+1)^2}{4} (nin N^* )
]
所以题目所求为
[sum_{i=1}^nf(i)=sum_{i=1}^nfrac{i^2(i^+1)^2}{4}
]
前缀和预处理即可
注意除(4)是建议乘(4)在模(1000000003)意义下的逆元(250000001)
[code
]
#include <cstdio>
#define re register
using namespace std;
template<typename T>
inline void read(T&x)
{
x=0;
char s=(char)getchar();
bool flag=false;
while(!(s>='0'&&s<='9'))
{
if(s=='-')
flag=true;
s=(char)getchar();
}
while(s>='0'&&s<='9')
{
x=(x<<1)+(x<<3)+s-'0';
s=(char)getchar();
}
if(flag)
x=(~x)+1;
}
int T,n;
const int N=1e6,mod=1000000003;
int f[N+5];
int main()
{
for(re int i=1; i<=N; ++i)
f[i]=(int)((f[i-1]+1ll*i*i%mod*(i+1)%mod*(i+1)%mod*250000001%mod)%mod);//250000001是4在模1000000003意义下的逆元
read(T);
while(T--)
{
read(n);
printf("%d
",f[n]);
}
return 0;
}