题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4651
题意:给出n。求其整数拆分的方案数。
i64 f[N];
void init()
{
f[0]=f[1]=1; f[2]=2;
int i,j,k,t;
for(i=3;i<N;i++) for(j=1;;j++)
{
FOR0(k,2)
{
if(!k) t=(3*j*j-j)/2;
else t=(3*j*j+j)/2;
if(t>i) break;
if(j&1) f[i]=(f[i]+f[i-t])%mod;
else f[i]=(f[i]-f[i-t])%mod;
}
if(t>i) break;
}
}
int n;
int main()
{
init();
rush()
{
RD(n);
if(f[n]<0) f[n]+=mod;
PR(f[n]);
}
}