这题太珂怕了……如果是我的话完全想不出来……
1 //minamoto 2 #include3 #include 4 #include 5 #define ll long long 6 #define swap(x,y) (x^=y,y^=x,x^=y) 7 #define mul(x,y) (1ll*(x)*(y)%P) 8 #define add(x,y) (x+y>=P?x+y-P:x+y) 9 #define dec(x,y) (x-y<0?x-y+P:x-y)10 using namespace std;11 const int N=1000005,P=1004535809;12 inline int ksm(int a,ll b){13 int res=1;14 while(b){15 if(b&1) res=mul(res,a);16 a=mul(a,a),b>>=1;17 }18 return res;19 }20 int n,r[N],A[N],B[N],fac[N],finv[N],O[N],C[N],F[N],G[N];21 inline void init(){22 fac[0]=fac[1]=finv[0]=1;23 for(int i=2;i<=n;++i) fac[i]=mul(fac[i-1],i);24 finv[n]=ksm(fac[n],P-2);25 for(int i=n-1;i;--i) finv[i]=mul(finv[i+1],i+1);26 }27 void NTT(int *A,int type,int len){28 int limit=1,l=0;29 while(limit >1]>>1)|((i&1)<<(l-1));32 for(int i=0;i >1);53 for(int i=0;i