program star;
var a,b,k,n,m:longint;
function mi(q1,q2:longint):int64;
begin
if q1=1 then exit(1);
if q2=0 then mi:=1
else mi:=q1*mi(q1,q2-1);
end;
function jiecheng(e:longint):int64;
begin
if e=0 then exit(1);
if e=1 then jiecheng:=1
else jiecheng:=e*jiecheng(e-1);
end;
function c(w1,w2:longint):int64;
begin
if w1=w2 then exit(1);
c:=jiecheng(w1) div (jiecheng(w2)*jiecheng(w1-w2));
end;
begin
assign(input,'star.in');assign(output,'star.out');
reset(input);rewrite(output);
readln(a,b,k,n,m);
writeln(mi(a,k-m)*mi(b,m)*c(k,m));
close(input);close(output);
end.
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.
我的也是二项式定理啊、就是我写代码有点随意。。。我给你稍微解释一下,麻烦忙我看看是在哪里有错误。谢了啊、mi函数mi(i,j)表示i的j次幂。jiecheng(i)是i的阶乘。
然后二项式定理(ax+by)^k整理得(a^k-r)*(b^r) *C(k,r)*X^(k-r)*Y^(r) (不知道你能不能看懂。。)所以就这样一带不久行了嘛。麻烦给看看啊。谢谢感激不尽!!!
我又改进了一下,还是不对,帮给看下啊
program star;
var a,b,k,n,m,i,j:longint;
c:array[-5..5000,1-5..5000]of int64;
function mi(q1,q2:longint):int64;
begin
if q1=1 then exit(1);
if q2=0 then mi:=1
else mi:=q1*mi(q1,q2-1);
end;
begin
assign(input,'star.in');assign(output,'star.out');
reset(input);rewrite(output);
readln(a,b,k,n,m);
fillchar(c,sizeof(c),0);
c[1,1]:=1;c[1,2]:=1;
for i:=2 to k do
for j:=1 to i+1 do
c[i,j]:=c[i-1,j]+c[i-1,j-1];
writeln((mi(a,k-m)*mi(b,m)*c[k,m+1])mod 10007);
close(input);close(output);
end.