用Pascal,求a/b的高精度值要程序,或者思路,要结果精确到小数点后20位
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/28 01:33:05
用Pascal,求a/b的高精度值要程序,或者思路,要结果精确到小数点后20位
用Pascal,求a/b的高精度值
要程序,或者思路,
要结果精确到小数点后20位
用Pascal,求a/b的高精度值要程序,或者思路,要结果精确到小数点后20位
var a,b,l,i,j:longint;
hash:array[1..100000]of boolean;
p,p1:array[0..100000]of longint;
s:ansistring;
begin
readln(a,b);
if a mod b=0 then begin writeln(a div b,'.',0);exit; end;
str(a div b,s);s:=s+'.';
a:=a mod b;
fillchar(hash,sizeof(hash),false);
l:=0;
p[0]:=a;
hash[a]:=true;
while a0 do
begin
a:=a*10;
inc(l);
p1[l]:=a div b;
a:=a mod b;
p[l]:=a;
if hash[p[l]] then break
else hash[p[l]]:=true;
end;
if a=0 then begin write(s); for i:=1 to l do write(p1[i]); end
else begin
for i:=0 to l-1 do
if p[i]=p[l] then break;
for j:=1 to i do s:=s+chr(p1[j]+48);
s:=s+'(';
for j:=i+1 to l do
s:=s+chr(48+p1[j]);
s:=s+')';
while length(s)>76 do
begin
writeln(copy(s,1,76));
delete(s,1,76);
end;
writeln(s);
end;
end.
顺便打出循环节!