题意:
小Z是养鸽子的人。一天,小Z给鸽子们喂玉米吃。一共有n只鸽子,小Z每秒会等概率选择一只鸽子并给他一粒玉米。一只鸽子饱了当且仅当它吃了的玉米粒数量 ≥ k ≥k ≥k。 小Z想要你告诉他,期望多少秒之后所有的鸽子都饱了。
题解:
min-max容斥枚举下集合大小,FFT预处理一下系数算min的期望即可。
#pragma GCC optimize(2)
#include <bits/stdc++.h>
using namespace std;
const int N=55, M=50005, mod=998244353;
inline int add(int x,int y) {
return (x+y>=mod) ? (x+y-mod) : (x+y);}
inline int dec(int x,int y) {
return (x-y<0) ? (x-y+mod) : (x-y);}
inline int mul(int x,int y) {
return (long long)x*y%mod;}
inline int power(int a,int b,int rs=1) {
for(;b;b>>=1,a=mul(a,a)) if(b&1) rs=mul(rs,a); return rs;}
int x,y;
inline void exgcd(int a,int b,int &x,int &y) {
b ? (exgcd(b,a%b,y,x),y-=a/b*x) : (x=1,y=0);}
inline int cinv(int a) {
return (exgcd(a,mod,x,y),(x+mod)%mod);}
int n,k;
struct combin {
int fac[M],ifac[M];
combin() {
fac[0]=1;
for(