中易网

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

答案:3  悬赏:10  
解决时间 2021-04-28 12:10
  • 提问者网友:刀枪不入
  • 2021-04-27 13:55
pascal用高精度方法求s=1+2+3+……+n的精确值
最佳答案
  • 二级知识专家网友:冷态度
  • 2021-04-27 15:06
二楼的
难道你准备一个一个从1加到n?

楼主
用公式s=n*(n+1)
一个高精度乘法就OK了
全部回答
  • 1楼网友:为你轻狂半世殇
  • 2021-04-27 17:31
不知道,你想要多高? 你要100位,肯定要数组
  • 2楼网友:滚刀废物浮浪人
  • 2021-04-27 16:11
program add; var i,j,k,t,n:longint; a,b:array[1..100] of longint; s1,s2,sum,tmp,temp:string; procedure doit;{过程:高精度加法} begin for i:=1 to length(s1) do a[length(s1)-i+1]:=ord(s1[i])-48; for j:=1 to length(s2) do b[length(s2)-j+1]:=ord(s2[j])-48; if length(s1)<length(s2) then k:=length(s2) else k:=length(s1); for i:=1 to k do begin a[i]:=a[i]+b[i]; a[i+1]:=a[i+1]+a[i] div 10; a[i]:=a[i] mod 10; end; if a[k+1]<>0 then k:=k+1; for i:=k downto 1 do begin temp:=''; str(a[i],temp); tmp:=tmp+temp; sum:=tmp; end; end; {过程结束,主要思想是用字符串读入数据,用数组保存数据、计算} begin assign(input,'add.in');reset(input); assign(output,'add.out');rewrite(output);{开启输入输出文件系统,输入文件为add.in,输出文件为add.out} readln(n);{读入n的值} s1:='1';sum:='';{初始化} for t:=2 to n do{循环,将累加的值作为s1,与s2相加} begin str(t,s2); doit;{过程:求和} s1:=sum; tmp:=''; end; writeln(sum);{输出总和的值} close(input); close(output);{关闭输入输出系统}{结束} end. 累死了,终于over了,高精度求和。这个是文件输入的,在add.in中输入n的值,在add.out输出和,这个是纯加法。还可以用高斯求和公式来算即s=n*(n+1)/2,太长了,写不下-_-
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息