Ввести натуральное число n и вывести значение числа n\1, выделив период дроби. например: 1\2=0.5 или 1\7=0,(142857) решение на языке pascal.

asdf43 asdf43    3   17.09.2019 14:30    3

Ответы
бооой бооой  07.10.2020 21:58
// 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
    end
end;

begin
  var n:=ReadInteger('n=');
  Writeln('1/',n,' = ',CycleFraction(n))
end.

Примеры
n= 2
1/2 = 0.5

n= 7
1/7 = 0.(142857)
 
n= 28
1/28 = 0.03(571428)

n= 118
1/118 = 0.0(0847457627118644067796610169491525423728813559322033898305)
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика