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

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

Ответ:
mitskevich077
mitskevich077
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
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?