不知道起什么标题了
组合数的计算
更新:不行,精度损失太大!
#include#include #define LL long long#define MAXN 2000using namespace std;int cnt;int f[MAXN][MAXN];LL c(LL m,LL n){ cnt++; return n==1?m:1.0*m/n*c(m-1,n-1);}////LL c(LL m,LL n){// if(m==0) return 0;// if(n==1) return m;// cnt++;// return c(m-1,n)+c(m-1,n-1);// //}//LL c(LL m,LL n){// if(f[m][n]) return f[m][n];// if(m==0) return 0;// if(n==1) return m;// cnt++;// return f[m][n]=c(m-1,n)+c(m-1,n-1);// //}int main(){ cout<
王老师证明费马小定理的副产物,C(m,n)=m/n*C(m-1,n-1);
想到能不能用这个算组合数,应该只有O(n)的复杂度。 试了一下,确实快得不像话,对比一下 (阶乘就..免了吧) 第二个用C(m,n)=C(m-1,n)+C(m-1,n-1) 第三个记忆化不是很确定正确不正确。。。