关于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.
哪里有问题 指出并修改。。
可以优化的话更好
展开
 我来答
Emperor_WJH
2013-11-23
知道答主
回答量:1
采纳率:0%
帮助的人:2.4万
展开全部
for i:= 2 to n do
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好像就是最大的了,要不然就得用高精度了吧
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式