HDU 4651 Partition(整数拆分)

时间:2023-03-09 03:06:29
HDU 4651 Partition(整数拆分)

题目链接: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]);
    }
}