Pascal
Modified: Wednesday, 22-12-2021 07:00 AM
Biểu diễn số thập phân vô hạn tuần hoàn ở dạng rút gọn
Phân số | Giá trị gốc | Giá trị rút gọn |
---|---|---|
1/3 | 0,333333... | 0,(3) |
45/56 | 0.803571428571428571... | 0,803(571428) |
var a,b,n,d,nd:int64;
i:integer;
Arr:array[1..10000] of int64;
s,st:ansistring;
//---Kiem tra xem so du lap lai chua---//
function check(d:int64):boolean;
begin
for i:=1 to nd do
if d=arr[i] then
begin
exit(true)
end ;
exit(false);
end;
//---main---//
begin
writeln('Nhap vao 2 so nguyen');
write('Nhap so a: ');readln(a);
write('Nhap so b: ');readln(b);
nd := 0;
n := a div b;
str(n,st);
s := st+',';
d := a mod b;
write(a,'/',b,' = ');
while d<>0 do
begin
if not check(d) then
begin
inc(nd); //Tăng chiều dài của mảng chứa số dư
arr[nd]:=d; //Gán số dư vào mảng
a := d*10; //Thêm số 0 vào số dư
n := a div b;
d := a mod b;
str(n,st); //Thêm giá trị tính được vào kết quả
s := s+st;
end
else
begin
insert('(',s,pos(',',s)+i); //Thêm dấu mở ngoặc '('
insert(')',s,length(s)+1); //Thêm dấu đóng ngoặc ')'
writeln(s);
break;
end;
if d =0 then
begin
write(s);
break;
end;
end;
readln;
end.