// PascalABC.NET 3.3, сборка 1627 от 27.01.2018// Внимание! Если программа не работает, обновите версию!function CycleFraction(n:integer):string;begin if n=1 then begin Result:='1'; Exit end; var ost:=new SortedList<integer,integer>; var res:=new List<integer>; ost.Add(1,1); var a:=1; var k:=1; while True do begin a*=10; var r:=a div n; res.Add(r); a:=a mod n; if ost.ContainsKey(a) then begin var p:=ost.Get(a); Result:=res.JoinIntoString(''); Result:='0.'+Result?[:p]+(a<>0?'('+Result?[p:]+')':''.ToString); exit end else begin k+=1; ost.Add(a,k); end endend;begin var n:=ReadInteger('n='); Writeln('1/',n,' = ',CycleFraction(n))end.
Примерыn= 21/2 = 0.5n= 71/7 = 0.(142857) n= 281/28 = 0.03(571428)n= 1181/118 = 0.0(0847457627118644067796610169491525423728813559322033898305)