关于free pascal的问题
vara:array[2..35000]ofint64;b:array[1..35000]ofint64;m,n,i:integer;beginassign(output...
var
a:array[2..35000] of int64;
b:array[1..35000] of int64;
m,n,i:integer;
begin
assign(output,'out.txt');rewrite(output);
read(m);
read(n);
a[2]:=2;
a[m]:=m;
for i:= 2 to n do
begin
a[2]:=2*a[2];
a[m]:=m*a[m];
end;
a[2]:=a[2]-2;
a[m]:=a[m]-m;
b[1]:=1;
for i:= 2 to m do
b[i]:=b[i-1]*i;
for i:=2 to (m-1) do
a[m]:=a[m]-a[i]*b[m]/(b[i]*b[m-i]);
write(a[m]);
close(output);
end.
哪里有问题 指出并修改。。
可以优化的话更好 展开
a:array[2..35000] of int64;
b:array[1..35000] of int64;
m,n,i:integer;
begin
assign(output,'out.txt');rewrite(output);
read(m);
read(n);
a[2]:=2;
a[m]:=m;
for i:= 2 to n do
begin
a[2]:=2*a[2];
a[m]:=m*a[m];
end;
a[2]:=a[2]-2;
a[m]:=a[m]-m;
b[1]:=1;
for i:= 2 to m do
b[i]:=b[i-1]*i;
for i:=2 to (m-1) do
a[m]:=a[m]-a[i]*b[m]/(b[i]*b[m-i]);
write(a[m]);
close(output);
end.
哪里有问题 指出并修改。。
可以优化的话更好 展开
1个回答
展开全部
for i:= 2 to n do
begin
a[2]:=2*a[2];
a[m]:=m*a[m];
end;
你的这几步可能写错了。
我没有问题的描述,所以不太清楚你要求什么。
begin
a[2]:=2*a[2];
a[m]:=m*a[m];
end;
你的这几步可能写错了。
我没有问题的描述,所以不太清楚你要求什么。
追问
原来的问题我已经搞清楚了 是a[m]:=a[m]-a[i]*b[m]/(b[i]*b[m-i]);这句有问题。。其次有些地方也不符合要求。。
现在这个问题已经解决了,然后我发现int64太小了,m=6,n>24以后 a[m] 就会溢出这样真正的作用就不大了。。有什么方法可以解决么??
追答
int64好像就是最大的了,要不然就得用高精度了吧
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询