讨论 / 二项式定理
b249265450 2012-07-15 18:19:00
点我顶贴 收藏 删除
这道题做第一次只有50分,原来发现a,b乘多了一次,改了之后,又忘了a=1,b=1的情况,太粗心了,要是比赛就完蛋了。用的是二项式定理,望各位大牛指点。

下面贴出代码:

var

i,j,k,m,n:longint;

a1,b1,a,b,c:int64;

s:array[0..1000,0..1000] of longint;

begin

readln(a,b,k,n,m);

fillchar(s,sizeof(s),0);

s[1,1]:=1;s[1,2]:=1;

for i:=2 to k do

for j:=1 to i+1 do

begin

s[i,j]:=s[i-1,j-1]+s[i-1,j];

s[i,j]:=s[i,j] mod 10007;

end;

c:=s[k,n+1];

{for i:=1 to k do

begin

for j:=1 to i+1 do

write(s[i,j],' ');

writeln;

end;}

a1:=1;b1:=1;

if a>1 then

begin

a1:=a;

for i:=1 to n-1 do

a1:=(a1*a) mod 10007;

end;

if b>1 then

begin

b1:=b;

for i:=1 to m-1 do

b1:=(b1*b) mod 10007;

end;

c:=(a1*c) mod 10007;

c:=(b1*c) mod 10007;

writeln(c);

end.

查看更多回复
提交回复