题意:一个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.