題目大意:一共n個數(1~n),問a[i] == i的個數大於等於k的方案數。
解題思路:其實就是大於等於k個人篩掉後剩下的人進行錯排的問題。選k~n個人對應得要乘上組合數,由於n比較大,k相對較小,可以打表陣列肯定mle,於是可以反過來想:總得排列數是ann,扣除小於k的方案就能夠得到答案,由於所有打表都進行取模,最後還要防止變成負數!求組合數取模的問題也可以用盧卡斯定理方法求得。
code:
#include
#include
const
int maxn =
(int
)1e4+5
;const
int mod =
(int
)1e9+7
;typedef
long
long ll;
ll dp[maxn]
,n,k,sum, a[maxn]
;ll c[maxn]
[105];
intmain()
a[1]=
1;for(
int i =
2; i < maxn; i++
)for
(int i =
0; i < maxn; i++)}
scanf
("%d"
,&t)
;while
(t--
) sum =
(a[n]
- sum + mod)
% mod;
//由於mod的原因可能會變成負數
printf
("%d\n"
, sum);}
return0;
}
Fzu 2282 錯排 組合
題意 給n個數字,求至少k個數字位置不變的排列數量。思路 求至少k個人位置不變只要用全排列的數量減掉0 k錯排的數量即可 錯排公式 dn n 1 dn 2 dn 1 錯排的數量為c n,i dn include include include include include using namesp...
RPG的錯排(組合數 錯排)
problem description 今年暑假杭電acm集訓隊第一次組成女生隊,其中有一隊叫rpg,但做為集訓隊成員之一的野駱駝竟然不知道rpg三個人具體是誰誰。rpg給他機會讓他猜猜,第一次猜 r是公主,p是草兒,g是月野兔 第二次猜 r是草兒,p是月野兔,g是公主 第三次猜 r是草兒,p是公主...
luogu p2282 組合數問題
傳送門 組合數 binom 表示的是從 n 個物品中選出 m 個物品的方案數。舉個例子,從 1,2,3 三個物品中選擇兩個物品可以有 1,2 1,3 2,3 這三種選擇方法。根據組合數的定義,我們可以給出計算組合數 binom 的一般公式 binom frac 其中 n 1 times2 times...