啊啊啊求c(n,k)

来源:互联网 发布:义乌淘宝村 编辑:程序博客网 时间:2024/05/23 13:37

poj 1306  Combinations


       下面给出两种方法^-^(都AC!!!)


#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<iostream>#include<algorithm>using namespace std;#define For(i, a, b) for(int i = a; i <= b; i++)#define ULL unsigned long longULL C(int k, int n){ULL ret = 1LL;For(i, 1, k)ret = (ret*(n-i+1))/i;return ret;}int main(){int n, k;while(scanf("%d%d", &n, &k) != EOF){if(!n && !k) break;int tmp = n-k, rk = k;k = min(tmp, k);printf("%d things taken %d at a time is %llu exactly.\n", n, rk, C(k, n));}return 0;}


#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<iostream>#include<algorithm>using namespace std;#define Forr(i, a, b) for(int i = a; i >= b; i--)#define ULL unsigned long longULL C(int k, int n){ULL ret = 1LL;int j = 2;Forr(i, n, n-k+1){ret *= i;while(ret % j == 0 && j <= k) ret /= j++;}return ret;}int main(){int n, k;while(scanf("%d%d", &n, &k) != EOF){if(!n && !k) break;                int rk = k;int tmp = n-k;k = min(tmp, k);printf("%d things taken %d at a time is %llu exactly.\n", n, rk, C(k, n));}return 0;}


1 0
原创粉丝点击