POJ 2249(组合数)

水题,这里注意计算的速度,方法不好可能会超时。

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<string>
#include<vector>
#include<stack>
#include<bitset>
#include<cstdlib>
#include<cmath>
#include<set>
#include<list>
#include<deque>
#include<map>
#include<queue>
using namespace std;
#define inf 0x3f3f3f3f
#define ll long long
const int maxn=200005;
const double eps=1e-8;
const double PI = acos(-1.0);
ll C(ll n,ll k)
{
    if(2*k>n) k=n-k;
    ll s=1;
    for(ll i=1,j=n; i<=k; i++,j--)
        s=s*j/i;
    return s;
}
int main()
{
    ll n,k;
    while(scanf("%lld%lld",&n,&k)&&(n||k))
    {
        printf("%lld\n",C(n,k));
    }
    return 0;
}

 

posted @ 2018-08-27 16:13  MCQ  阅读(207)  评论(0编辑  收藏  举报