poj1942 Paths on a Grid(无mod大组合数)

Posted kafuuchino

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了poj1942 Paths on a Grid(无mod大组合数)相关的知识,希望对你有一定的参考价值。

poj1942 Paths on a Grid

题意:给定一个长m高n$(n,m in unsigned 32-bit)$的矩形,问有几种走法。$n=m=0$时终止。

显然的$C(m+n,n)$

但是没有取模,n,m的范围又在unsigned int 范围内

于是有一种神奇的方法↓↓

typedef unsigned us;
us C(us a,us b){//C(a,b)
double cnt=1.0; while(b) cnt*=(double)(a--)/(double)(b--); return (us)(cnt+0.5); }
技术分享图片
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #define re register
 5 using namespace std;
 6 typedef unsigned us;
 7 us min(us a,us b){return a<b?a:b;}
 8 us n,m;
 9 us C(us a,us b){
10     double cnt=1.0;
11     while(b) cnt*=(double)(a--)/(double)(b--);
12     return (us)(cnt+0.5);
13 }
14 int main(){
15     while(cin>>n>>m){
16         if(!n&&!m) return 0;
17         cout<<C(n+m,min(n,m))<<endl;
18     }
19 }
View Code

 

以上是关于poj1942 Paths on a Grid(无mod大组合数)的主要内容,如果未能解决你的问题,请参考以下文章

[ACM] POJ 1942 Paths on a Grid (组合)

Paths on a Grid POJ 1942 (组合数学 || 暴力)

POJ1942-Paths On a Grid-组合数学

POJ1942-Paths on a Grid

POJ1850&&1019&&1942

poj1942(求组合数)