zoj
2290
jzoj\ 2290
jzoj22
90計算組合數:
其中n
nn、m
mm和c(n
,m
)c(n, m)
c(n,m)
均滿足64
6464
位無符號整數取值範圍
第一行為乙個整數t(1
<=t
<=10
)t (1 <= t <= 10)
t(1<=t
<=1
0),表示測試資料組數。
接下來t
tt行,每行有兩個數,分別為n
nn和mmm。
對於每一對n
nn和m
mm,輸出c(n
,m
)c(n, m)
c(n,m)
的值。每組資料各佔一行。
242
53
6
10
這個其實就是中國剩餘定理。
我們直接楊輝三角暴力出2000
2000
2000
以內的,然後再把一些特殊情況直接列出來。(為了省時間)
接著就中國剩餘定理就完事了。
#include
#include
#include
#define rr register
#define ll unsigned long long
using
namespace std;
ll t, n, m, ans, c[
2001][
2001];
bool in[
10001];
intmain()
for(rr ll i =
1; i <=
2000
;i ++
)for
(rr ll j =
1; j < i; j++
) c[i]
[j]= c[i -1]
[j]+ c[i -1]
[j -1]
;//直接暴力求2000內答案
scanf
("%llu"
,&t)
;//讀入
for(ll t =
1; t <= t; t++)if
(n == m || n - m == n)
if(n - m ==
1|| m ==1)
ans =1;
memset
(in,0,
sizeof
(in));
//初始化
for(rr ll i =
max(m, n - m)+1
; i <= n; i++)}
printf
("%llu\n"
, ans)
;//輸出
}return0;
}
計算組合數
1.防溢位 如果直接用c n,m n!n m m 來程式設計很可能會在算n!時就爆了long long,所以每一步最好把除分母也算上。所以對於c n,m 來說取m min m,n m 來算c n,m n n 1 n 2 n m 1 m m 1 m 2 1 顯然分子分母都是m項相乘,從後往前去算 先算...
計算組合數
計算組合數 time limit 1000ms memory limit 32768kb submit statistic problem description 計算組合數。c n,m 表示從n個數中選擇m個的組合數。計算公式如下 若 m 0,c n,m 1 否則,若 n 1,c n,m 1 否則...
計算組合數
time limit 1000 ms memory limit 32768 kib problem description 計算組合數。c n,m 表示從n個數中選擇m個的組合數。計算公式如下 若 m 0,c n,m 1 否則,若 n 1,c n,m 1 否則,若m n,c n,m 1 否則 c n...