poj1942求组合数

原创 2016年06月01日 14:25:36

就是一求组合数的问题。


#include <iostream>
#include <algorithm>

using namespace std;

#define ULL unsigned long long int

int main()
{
    ULL a, b;
    while (cin >> a >> b && (a || b))
    {
        if (b > a) swap(a, b);
        ULL s = 1, i, j;
        for (i = a + 1, j = 1; i <= a + b; i++, j++)
        {
            s = s * i / j;
            cout<<i<<" "<<j<<" "<<s<<endl;
        }
        cout << s << endl;
    }
}



或者

/*强制类型转换输出*/

//Memory Time 
//220K   0MS 

#include<iostream>
#include<math.h>
using namespace std;

/*Compute (n+m)C min{n,m}*/

unsigned comp(unsigned n,unsigned m)
{
	unsigned a=m+n;
	unsigned b=(m<n?m:n);
	double cnm=1.0;
	while(b>0)
		cnm*=(double)(a--)/(double)(b--);

    cnm+=0.5;      //double转unsigned会强制截断小数,必须先四舍五入
	return (unsigned)cnm;
}

int main(void)
{
	unsigned m,n;
	while(true)
	{
		cin>>m>>n;
		if(!m && !n)//承认这题的猥琐吧!竟然有其中一边为0的矩阵,一定要&&,用||会WA
			break;

		cout<<comp(n,m)<<endl;
	}
	return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

poj1942线性复杂度求组合数

补发博客 就是求C(m+n,m); 读代码吧少年! #include #include #include #include #include #include #include #inclu...
  • u013569304
  • u013569304
  • 2016年05月04日 16:34
  • 316

poj1942 组合数

大水题,赤果果的水题。 n*m的网格,从最
  • u013983192
  • u013983192
  • 2014年07月13日 10:12
  • 285

Lucas大组合数模板

typedef long long ll;struct Lucas { ll n, m, p; ll qPow (ll a, ll k) { ll ans = 1; while (k) { if (k...
  • qq547276542
  • qq547276542
  • 2015年08月20日 10:32
  • 957

求组合数的递归算法

int comm(int n,int k) { if(n==k||k==0) return 1; else if(k==1) return n; else return comm(n...
  • luojiayu14
  • luojiayu14
  • 2011年12月21日 20:20
  • 1886

组合数的模的几种求法总结

11111
  • u013749267
  • u013749267
  • 2014年08月24日 18:02
  • 1043

c语言实现求组合数(带点优化的思想,防止溢出)

这是大家都知道的组合数,思想也很简单,但是里面的阶乘,容易溢出,让m!/n!先约分,减小数的大小,m!/n! = (n+1)(n+2)(n+3)···(m-1)(m); 如果m-n > n的话,我们...
  • u014574317
  • u014574317
  • 2017年04月02日 22:10
  • 460

关于acm中常见的计算组合数的方法总结

关于acm中常见的计算组合数的方法总结
  • u012476429
  • u012476429
  • 2014年02月27日 20:28
  • 4565

[组合数]求组合数的几种方法总结

求C(n,m)%mod的方法总结1.当n,m都很小的时候可以利用杨辉三角直接求。 C(n,m)=C(n-1,m)+C(n-1,m-1);2.利用乘法逆元。 乘法逆元:(a/b)%mod=a*(b^...
  • u010582475
  • u010582475
  • 2015年08月16日 22:08
  • 3318

用C语言求组合数

C语言求组合数不能直接使用数学公式C(n,m)=(m!)/(n!*(m-n)!);即使VC 6.0的int是32bit,但其实当计算到17!时候就会溢出,所以需要另辟蹊径。     先来把公式变...
  • o470888980
  • o470888980
  • 2015年05月19日 22:00
  • 1240

关于求组合数的一些总结

对于求C(n,m) 1.如果是对于小范围内的n和m(不是很难)就不说了 差不多用java的大数就可以了 2.当n在1e10^5范围左右,往往是会有取模,设这个数为mod(往往mod为质数,这个很...
  • Coldfresh
  • Coldfresh
  • 2017年06月05日 20:49
  • 524
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:poj1942求组合数
举报原因:
原因补充:

(最多只允许输入30个字)