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.