傳送門 記\(a=\lfloor\frac n p\rfloor\),\(b=n\%p\)。我們嘗試使用lucas定理展開這些組合數,尋找公共部分。以下除法都作整數下取整除法:
\[\begin
f(n,k)&=\sum_^kc_n^i\mod p\\
&=\sum_^c_^*c_^+\sum_^c_^*c_^\\
&=(\sum_^c_^i*\sum_^c_^j)+c_^*\sum_^bc_^i\\
&=f(n/p,a-1)*f(n\%p,p-1)+c_^f(n\%p,k\%p)
\end
\]所以只需要預處理\(f(0...p-1,0...p-1)\)的值就可以直接計算了。
注意判斷k<0的情況,此時\(f\)為0。
#include using namespace std;
typedef long long ll;
const int mod=2333,n=2351;
int c[n][n],f[n][n];
inline int plus(int x,int y)
inline int mul(int x,int y)
inline int c(ll n,ll m)
int solve(ll n,ll k)
void init()
for(int i=0;i}int main()
return 0;
}
4591 Shoi2015 超能粒子炮 改
time limit 10 sec memory limit 256 mb submit 591 solved 218 submit status discuss 曾經發明了腦洞 儀 超能粒子炮的發明家shtsc又公開了他的新發明 超能粒子炮 改 一種可以發射威力更加 強大的粒子流的神秘裝置。超能粒...
Bzoj3562 神器化合物 Shoi 2014
ac通道 分析 若把每乙個原子看作乙個節點,將化學鍵看作一條邊,那麼這個題目要求的 分子的個數 很容易就可以看出是求圖中聯通塊的個數。求聯通塊的個數,可以使用並查集。可如何求出每一步的聯通塊的個數呢?可以知道,當連上一條邊時,若此邊連線的是兩個不同的聯通塊,那麼分子個數就會減一 當刪去一條邊時,若刪...
BZOJ 3566 SHOI2014 概率充電器
題目 題意 給定樹形結構的n個元件,每個元件有一定概率自己充電,還有一定概率通過某條邊給其他元件充電,求充電的元件期望個數。n 500000 題解 樹形結構肯定能想到樹形dp,全樹對某點產生的貢獻一般可以通過一到兩遍樹形dp計算得出,本題所求期望等於每個元件被充電的概率之和。設f i 表示i被充電的...