版本1:
有方程a1*x1+a2*x2+...an*xn=N,给定n(1000=>n>=1)个系数ai(1000>=ai>=0)和N(1000>=N>0),求满足这个方程的非负整数解(x1,x2...xn)的个数。(结果对10007取模)
实现1:
构造母函数,(1+x^1+x^2+..x^(N/a1))^^a1*(1+x^1+x^2+..x^(N/a2))^^a2...(1+x^1+..x^(N/an))^^an
^^ai表示从从第一项中取出的项指数乘以ai;
这个函数展开后x^N前面的系数就是方程解的个数。
时间复杂度O(N^2*n);
实现2:
DP,f[N]+=f[N-a[i]] (1<=i<=n)
时间复杂度O(N*n)
版本2:
求方程x1+x2+…...+xn = m满足xi>=1的解的个数。
输入由多组数据组成。每组数据输入一行n和m(1<=n<=300,n<=m<=100000)。
由于方程的解的个数会超过整数范围,因此输出的结果对10007求余
实现1:
由于是上例的特殊情况,令a[i]都=1;
直接套用上例DP时间复杂度为O(m*n&#x