組合數的定義
給你n個數,從中取出m個數,共有 cn
m中取法,cn
m=n!/(m!*(n-m)!)。
重要公式
cnm= cn-1
m+ cn-1
m-1
題目大意
資料有t組,給你n,m,k,問你對於所有的i∈[0,n],j∈[0,min(i,m)],有多少對ci
j可以整除k。
t<=1e4,n,m<=2000;
思路
暴力跑的時間複雜度是o(tn2),直接超時,所以我們需要找一種查詢時間複雜度為o(1)的方法。
看到上面那個公式,cn
m= cn-1
m+ cn-1
m-1,再看看資料範圍,n,m都是2000以內,那麼我們可以把乙個2000*2000的矩陣預處理出來,裡面存ci
j,這個操作只需要4e6的時間,然後對每個t,o(1)查詢就可以。
#include
using
namespace std;
const
int n=
2e3+5;
const
int inf=
0x7fffffff
;const
int mod=
1e9+7;
const
int eps=
1e-6
;typedef
long
long ll;
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define pii pair
//#define int long long
#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define endl '\n'
int t,k,n,m;
int c[n]
[n],s[n]
[n];
void
fun()}
for(
int i=
2;i<=
2000
;i++
) s[i]
[i+1
]=s[i]
[i];}}
signed
main()
}
組合數公式
若表示在 n 個物品中選取 m 個物品,則如存在下述公式 所以可以用遞推算組合數 題目描述 開學了,學校又迎來了好多新生。acmer想為新生準備乙個節目。來報名要表演節目的人很多,多達n個,但是只需要從這n個人中選m個就夠了,一共有多少種選擇方法?輸入 測試例項包括多組測試資料,每組資料佔一行。每組...
組合數問題
題目描述 組合數c n mc n m 表示的是從n個物品中選出m個物品的方案數。舉個例子,從 1,2,3 三個物品中選擇兩個物品可以有 1,2 1,3 2,3 這三種選擇方法。根據組合數的定 義,我們可以給出計算組合數的一般公式 c n m fracc n m m n m n 其中n 1 2 n 小...
問題 A 組合數
唯一分解定理在此 時間限制 1 sec 記憶體限制 128 mb 提交 1938 解決 147 提交 狀態 命題人 jsu admin 題目描述 求組合數c n,m 以及c n,m 因子個數。輸入n和m,其中0 m n 50,以eof結束。輸出該組合數結果 樣例輸入 copy 3 2 4 2樣例輸出...