作业帮 > 综合 > 作业

Free pascal 输入2个正整数求相除的值,如果有循环节,用括号括起来

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/23 20:45:48
Free pascal 输入2个正整数求相除的值,如果有循环节,用括号括起来
输入n,m,求n/m的值,循环节用括号括起来,如1/3=(3)只要longint就够
{1/3=0.(3)是么?}
const maxm=1000;//m的最大值
var n,m,l,r,i:longint;
ans:array[0..100000] of longint;
remember:array[0..maxm]of longint;
flag:boolean;
procedure getans(x,k:longint);
begin
repeat
if remember[k]>0 then
begin
l:=remember[k];
r:=x-1;
flag:=true;
exit;
end;
remember[k]:=x;
ans[x]:=k*10 div m;
k:=k*10 mod m;
if k=0 then
begin
flag:=false;
r:=x;
exit;
end;
inc(x);
until false;
end;
begin
readln(n,m);
write(n div m);
n:=n mod m;
if n0 then
begin
write('.');
l:=0;r:=0;
getans(1,n);
for i:=1 to r do
begin
if flag and (l=i) then write('(');
write(ans[i]);
if flag and (i=r) then write(')');
end;
end;
readln;
end.