pascal用高精度方法求s=1+2+3+……+n的精确值

 我来答
zyh617517224
2011-02-13 · TA获得超过1549个赞
知道小有建树答主
回答量:654
采纳率:0%
帮助的人:808万
展开全部
type arr=array[1..500]of longint;
var a,b:arr;
i,n,w1,w,j:longint;
procedure jia;
var c:arr;
w2,i:longint;
begin
w2:=w;
fillchar(c,sizeof(c),0);
for i:=1 to w2 do begin
c[i]:=c[i]+a[i]+b[i];
c[i+1]:=c[i+1]+c[i] div 10;
c[i]:=c[i] mod 10;
end;
if c[w2+1]>0 then inc(w2);
a:=c;
w:=w2;
end;
begin
readln(n);
w:=1;
for i:=1 to n do begin
fillchar(b,sizeof(b),0);
j:=i;
w1:=0;
while j>0 do begin
inc(w1);
b[w1]:=j mod 10;
j:=j div 10;
end;
jia;
end;
for i:=w downto 1 do write(a[i]);
end.

或者
var n,m,i,j,w1,w2,w3:longint;
a,b,c:array[1..500]of longint;
begin
readln(n);
m:=n+1;
if n mod 2=0 then n:=n div 2
else m:=m div 2;
while n>0 do begin
inc(w1);
a[w1]:=n mod 10;
n:=n div 10;
end;
while m>0 do begin
inc(w2);
b[w2]:=m mod 10;
m:=m div 10;
end;
for i:=1 to w1 do
for j:=1 to w2 do begin
c[i+j-1]:=a[i]*b[j]+c[i+j-1];
c[i+j]:=c[i+j]+c[i+j-1] div 10;
c[i+j-1]:=c[i+j-1] mod 10;
end;
w3:=w1+w2;
while (c[w3]=0)and(w3>1) do dec(w3);
for i:=w3 downto 1 do write(c[i]);
end.
第二个比较快
450332320
2011-02-12
知道答主
回答量:1
采纳率:0%
帮助的人:0
展开全部
var s,n:integer(或者longint,看你);
begin
readln(n);
s:=1+2+3+...+n;
wirteln(s);
end.
或者那段话不需要写,给你个参考
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Enter147
2011-02-12
知道答主
回答量:30
采纳率:0%
帮助的人:0
展开全部
var
s,n:longint;
begin
read(n);
s:=(1+n)*n/2
writeln(s);
end.
还没测试过 不过应该可以过
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hcx0125
2011-02-14
知道答主
回答量:8
采纳率:0%
帮助的人:3.9万
展开全部
var s,i,n:integer
begin
s:=0;
readln(n);
for i:=1 to n do s:=s+i;
end.

这个很精确,也不需要用到s:=(1+n)*n/2等公式啥的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2011-03-01 · 超过12用户采纳过TA的回答
知道答主
回答量:47
采纳率:0%
帮助的人:29.6万
展开全部
var
s,n:longint;
begin
read(n);
writeln((1+n)*n/2)
end.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式