В
Все
М
Математика
А
Английский язык
Х
Химия
Э
Экономика
П
Право
И
Информатика
У
Українська мова
Қ
Қазақ тiлi
О
ОБЖ
Н
Немецкий язык
Б
Беларуская мова
У
Українська література
М
Музыка
П
Психология
А
Алгебра
Л
Литература
Б
Биология
М
МХК
О
Окружающий мир
О
Обществознание
И
История
Г
Геометрия
Ф
Французский язык
Ф
Физика
Д
Другие предметы
Р
Русский язык
Г
География
Yarina0311
Yarina0311
15.10.2022 13:28 •  Информатика

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

Показать ответ
Ответ:
тигр187
тигр187
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)
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота