【BZOJ4591】 SHOI2015 超能粒子炮·改
题意:求 Σkj=0C(n,j) Mod 2333 (n,k≤1018) , 105 组多测。
从来没有写过Lucas定理,全都忘光了……刚好趁这个机会记录一下。
Lucas定理: C(n,m)≡C(n/p,m/p)∗C(n%p,m%p) (mod p)
推导过程:令
p=2333,sum[i][j]=Σjk=0C(i,j)
ans(n,k)=Σkj=0C(n,j)
=C(n,0)+C(n,1)+C(n,2)+...+C(n,k)
=C(n/p,0/p)∗C(n%p,0%p)+C(n/p,1/p)∗C(n%p,1%p)+...+C(n/p,k/p)∗C(n%p,k%p)
=C(n/p,0)∗sum[n%p][p−1]+C(n/p,1)∗sum[n%p][p−1]+...+C(n/p,k/p−1)∗sum[n%p][p−1]+C(n/p,k/p)∗sum[n%p][k%p]
=sum[n%p][p−1]∗Σk/p−1j=0C(n/p,j)+C(n/p,k/p)∗sum[n%p][k%p]
=sum[n%p][p−1]∗ans(n/p,k/p−1)+C(n/p,k/p)∗sum[n%p][k%p]
预处理 C(0,0)∼C(p−1,p−1) 及 sum[0∼p−1][0∼p−1] 。 ans(n/p,k/p−1) 递归求解, C(n/p,k/p) 用Lucas定理递归求出。
时间复杂度……不太会算,不过显然小于 O(log2pn) 。
以上。大家都会就我不会好虚啊。
还有7天JSOI……加油吧。
logpn+logp⌊np⌋+logp⌊np2⌋+... 有谁会算的话劳请教一下本蒟蒻……谢谢。