題目描述求有多少種長度為 n 的序列 a,滿足以下條件:
1 ~ n 這 n 個數在序列中各出現了一次
若第 i 個數 a[i] 的值為 i,則稱 i 是穩定的。序列恰好有 m 個數是穩定的
滿足條件的序列可能很多,序列數對 109
+7
10^9+7
109+
7 取模。
輸入格式
第一行乙個數 t,表示有 t 組資料。
接下來 t 行,每行兩個整數 n、m。
輸出格式
輸出 t 行,每行乙個數,表示求出的序列數
輸入輸出樣例輸入51 01 1
5 2100 50
10000 5000
輸出0120578028887
60695423
說明/提示t=500000 ,n≤1000000 ,m≤1000000 。
解釋:答案=cnm∗d(n
−m
)c_^m*d(n-m)
cnm∗d
(n−m
)其中d
dd為錯排公式,d(n
)=(n
−1)∗
(d(n
−1)+
d(n−
2)
)d(n)=(n-1)*(d(n-1)+d(n-2))
d(n)=(
n−1)
∗(d(
n−1)
+d(n
−2))
再利用逆元就ok
#include#define mod 1000000007
#define n 1000003
using namespace std;
int t=0;
int n=0,m=0;
long long d[n]=;
long long fact[n]=;
long long inv[n]=;
long long pow(long long a,long long b)
return ret;
}int main()
return 0;
}
洛谷 P4071 SDOI2016 排列計數
簡化版題意 1 n n個數字,問滿足m個ai i的排列個數 答案對1e9 7取模 這題就是道裸題,不知道為啥還能是藍的 前置技能一 快速冪 太簡單了不講了 這週和矩陣的知識點一起寫 前置技能二 錯排公式 顧名思義錯排就是ai i的排列個數,高中應該都學過 下面是推理過程 我們設f n 代表n個數的錯...
P4071 SDOI2016 排列計數
求有多少種長度為 n 的序列 a,滿足以下條件 1 n 這 n 個數在序列中各出現了一次 若第 i 個數 a i 的值為 i,則稱 i 是穩定的。序列恰好有 m 個數是穩定的 滿足條件的序列可能很多,序列數對 109 7取模。輸入格式 第一行乙個數 t,表示有 t 組資料。接下來 t 行,每行兩個整...
題解 P4071 SDOI2016 排列計數
題目鏈結 題目大意 問有多少個 1 n 的排列 a 恰好有 m 個數滿足 a i i 錯排,計數 分析 首先我們選 m 個數有 c n m 種,那麼我們要求答案合法就必須使得剩下的數都不滿足 a i i 也就是我們要求 n m 個數錯排的方案數,假設 d n 表示 n 個數錯排的方案數,我們的答案就...