poj1942 遞推

2015/2/25


求組合數...

注意點在於在for循環的過程中分母分子分開求的話會爆LL,所以只能求一組算一組(使用double)

最後取整的時候+0.5,保證精度。


#include<map>
#include<queue>
#include<stack>
#include<cmath>
#include<vector>
#include<climits>
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>

using namespace std;
typedef long long ll;  

#define mod 10007
#define lson pos<<1,l,mid
#define sc(n) scanf("%d",&n)
#define rson pos<<1|1,mid+1,r
#define pr(n) printf("%d\n",n)
#define met(n,m) memset(n, m, sizeof(n))
#define F(x,y,i) for(int i = x;i > y; i--)
#define f(x,y,i) for(int i = x;i < y; i++)
#define ff(x,y,i) for(int i = x;i <= y; i++)
#define FF(x,y,i) for(int i = x;i >= y; i--) 

const int N=100500;
const int inf = INT_MAX;

int Max(int a,int b)
{
	return a>b?a:b;
}

int Min(int a,int b)
{
	return  a<b?a:b;
}



int main()  
{  
    int n, m, tot, x;
    __int64 a , b; 
    while(~scanf("%I64d%I64d",&a,&b))
    {
    	if(!a&&!b)break;
		
		if(a < b)swap(a,b);
		a+=b;
		double sum = 1.0;
		
		for(__int64 i = 1;i<= b; i++)
		{
			sum*=a*1.0/(1.0*i);
			a--;
		}
		sum+=0.5;
		
		printf("%I64d\n",(__int64)sum);
				    	
    }
    return 0;  
}  
	


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章