【完全背包】CH 5202 或 TYVJ 1172 自然数拆分Lunatic版

链接

http://contest-hunter.org:83/contest/0x50%E3%80%8C%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92%E3%80%8D%E4%BE%8B%E9%A2%98/5202%20%E8%87%AA%E7%84%B6%E6%95%B0%E6%8B%86%E5%88%86Lunatic%E7%89%88


大意

1 N 的所有数中选出若干个数(可以重复),求方案数%2147483648


思路

为啥模数不是2147483648的平方。。。那样我就可以用自然溢出了


完全背包求方案数


代码

#include<cstdio>
using namespace std;int n;
unsigned f[4001];
signed main()
{
    f[0]=1;
    scanf("%d",&n);
    for(register int i=1;i<=n;i++)
     for(register int j=i;j<=n;j++)
      f[j]=(f[j]+f[j-i])%2147483648u;//记得取模
    printf("%u",f[n]>0?f[n]-1:2147483647);
}

猜你喜欢

转载自blog.csdn.net/xuxiayang/article/details/81808977
今日推荐