整数拆分 生成函数 模版

来源:互联网 发布:html5media.min.js 编辑:程序博客网 时间:2024/06/05 07:39
int n=1e5+5,m;ll a[maxn],b[maxn];ll ans[maxn],tmp[maxn];void Init(){    int t=1000;    for(int i=-1000;i<=1000;i++)        tmp[i+t]=i*(3*i-1)/2;    ans[0]=1;    for(int i=1;i<n;i++)    {        ans[i]=0;        for(int j=1;j<=i;j++)        {            if(tmp[j+t]<=i)            {                if(j&1)  ans[i]+=ans[i-tmp[j+t]];                else     ans[i]-=ans[i-tmp[j+t]];            }            else break;            ans[i]=(ans[i]%mod+mod)%mod;            if(tmp[t-j]<=i)            {                if(j&1) ans[i]+=ans[i-tmp[t-j]];                else    ans[i]-=ans[i-tmp[t-j]];            }            else break;        }        ans[i]=(ans[i]%mod+mod)%mod;    }}

原创粉丝点击