题意:一个N*M的网格,只能在网格的边上向上或向右走,求从左下角走到右上角的方案数.
分析:一共要走N+M步,其中M步向右,N步向上.因此方案数即C(N+M,N).
code:
var n,m,max,o,ans:int64; begin while not eof do begin readln(n,m); if n+m=0 then halt; max:=n; if m>max then max:=m; ans:=1; o:=max+1; while o<=n+m do begin ans:=int64(ans)*int64(o) div int64(o-max); o:=o+1; end; writeln(ans); end; end.