母函数初步

母函数初步


推荐看《具体数学》和数一的课件

HDOJ-1398 Square Coins

构造母函数:
\(G(x) = (1+x+x^2+x^3+\dots)(1+x^4+x^8+x^12+\dots) \dots (1+x^289+x^(578)+\dots)\).
该函数是无限的,但是我们要求解的结果是有限的,只用模拟乘法就行了
x的系数表示方案的数量,x的幂次表示所凑的钱数

ac code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <bits/stdc++.h>
using namespace std;
const int maxn = 305;
int c1[maxn], c2[maxn];
int n;
void init(){
for(int i=0; i<maxn; i++) c1[i] = 1;
memset(c2, 0, sizeof(c2));
}
int main(){
ios::sync_with_stdio(false);
while(cin>>n&&n){
init();
for(int i=2; i<=17; i++){
for(int j=0; j<=n; j++){
for(int k=0; k+j<=n; k+=(i*i)){
c2[k+j] += 1*c1[j];
}
}
for(int j=0; j<=n; j++){
c1[j] = c2[j];
c2[j] = 0;
}
}
cout<<c1[n]<<endl;
}
return 0;
}

未解决的问题

文章目录
  1. 1. HDOJ-1398 Square Coins
    1. 1.1. ac code
  2. 2. 未解决的问题
{{ live2d() }}