Công thức tích Vandermonde :
Nhị thức Newton :
Catanlan độ dài
Phi hàm Euler:
GCD của hai số Fibonacci
Sinh các bộ
Tính
for(int i=1; i<=k+2; ++i){
y[i]=add(y[i-1], binpow(i, k));
}
if(n<=k+2) return cout<<y[n], void();
int convolution=1;
fact[0]=inv[0]=1;
for(int i=1; i<=k+2; ++i){
fact[i]=mul(fact[i-1], i);
inv[i]=inverse(fact[i]);
}
prefix[0]=suffix[k+3]=1;
for(int i=1, j=k+2; j>0; ++i, --j){
prefix[i]=mul(prefix[i-1], (n-i));
suffix[j]=mul(suffix[j+1], (n-j));
}
int ans=0;
for(int i=1; i<=k+2; ++i){
int res=mul(prefix[i-1], suffix[i+1]);
res=mul(res, mul(y[i], inverse(mul(fact[i-1], fact[k+2-i]))));
if(k+2-i&1) ans=(ans-res+M)%M;
else ans=(ans+res)%M;
}
cout<<ans;
for (int i = 1; i <= maxN; i++) EulerPhi[i] = i;
for (int i = 2; i <= maxN; i++) {
if (EulerPhi[i] != i) continue; // i is composite
for (int j = 1; i * j <= maxN; j++)
EulerPhi[i * j] = (EulerPhi[i * j] / i) * (i - 1);
}
Size of
for every
Định lý Lucas :
Extended Catalan with a fixed prefix with