泰勒展开
公式
常见公式。
指数型母函数
例题
Counting Sequences II
题意:构造一盒序列a[1,n],满足1<=a[i] <=m,其中偶数出现的次数是偶数次
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 4e5+9;
const ll mod = 1e9+7;
ll fac[maxn], inv_fac[maxn];
ll inv2;
ll fp(ll x, ll p){
if (p == 0) return 1;
ll t = fp(x, p / 2) % mod;
if (p & 1) return t * t % mod * x % mod;
return t * t % mod;
}
ll solve(ll n, ll m){
ll res = 0;
ll st = 2;
if (m % 2){
res = 1;
st = 3;
}
ll mul = 1;
for (int i = m / 2, j = 1; i >= 1; i--, j++){
mul = mul * i % mod;
res = (res + (mul * fp(st, n) % mod) % mod * inv_fac[j] % mod) % mod;
st+= 2;
}
return res * fp(inv2, m/2) % mod;
}
int main(){
inv2 = fp(2, mod - 2);
fac[0] = 1;
for (int i = 1; i < maxn; i++) fac[i] = fac[i-1] * i % mod;
inv_fac[maxn - 1] = fp(fac[maxn - 1] , mod - 2);
for (int i = maxn - 2; i >= 0; i--){
inv_fac[i] = inv_fac[i + 1] * (i + 1) % mod;
}
int t ;
scanf("%d", &t);
while (t--){
ll n, m;
scanf("%lld%lld", &n, &m);
printf("%lld\n", solve(n, m));
}
return 0;
}
参看:https://blog.csdn.net/jk_chen_acmer/article/details/100859429