分为有序计数和无序计数,往往和背包结合,至少目前看来是这样的

无序

rep(i, 1, n){
	rep(j, a[i], m){ //如果不能重复选,就要变成 per(j, m, a[i])
		f[j] = (f[j - a[i]] + f[j]) % mod;
	}
}

有序

rep(j, 0, m){ //如果只能选一次, 那就变成 per(j, m, 0)
	rep(i, 1, n){
		if(j >= a[i]) f[j] = (f[j - a[i]] + f[j]) % mod;
	}
}