По заданным M и N получить период дроби M/N, если дробь конечная, вывести 0 - Pascal

Узнай цену своей работы

Формулировка задачи:

По заданным M и N получить период дроби M/N, если дробь конечная, выводим 0. Пример: 1/2, выводим 0 4/3, выводим 3 1/7, выводим 142857 --------------------------------- 1 тур муниципального этапа олимпиады по программированию

Решение задачи: «По заданным M и N получить период дроби M/N, если дробь конечная, вывести 0»

textual
Листинг программы
var
ost,ch:array[1..1000]of integer;
m,n,n1,i,j,k,konec:integer;
begin
readln(m,n);
m:=m mod n;
n1:=n;
 write('period=') ;
repeat
  if n1 mod 2=0 then n1:=n1 div 2;
  if n1 mod 5=0 then n1:=n1 div 5;
until (n1 mod 2<>0)and(n1 mod 5<>0);
if n1=1 then writeln(0)else begin
 repeat
    repeat
    m:=m*10;
    until m>=n;
     inc(i);
       ost[i]:=m mod n;
       ch[i]:=m div n;
       m:=ost[i];
        for j:=1 to i-1 do
        if m=ost[j]
           then
           begin
           for k:=j to i-1 do
           write(ch[k]);
           konec:=1;
           end;
   until konec=1;
  end;
  readln;
  end.

Объяснение кода листинга программы

  1. В начале кода объявляются переменные ost, ch, m, n, n1, i, j, k, konec.
  2. Затем происходит чтение переменных m и n с помощью функции readln.
  3. Переменная m приводится к остатку от деления на n с помощью операции m := m mod n.
  4. Переменная n1 инициализируется значением n.
  5. Выводится строка period= для индикации начала периода.
  6. Затем в цикле повторяется следующая последовательность действий:
    • Если n1 mod 2=0, то n1 делится на 2.
    • Если n1 mod 5=0, то n1 делится на 5.
    • Цикл продолжается до тех пор, пока n1 не станет нечетным и не будет делиться на 5.
    • После этого выводится значение n1.
  7. Если n1 равно 1, то выводится 0, иначе начинается следующий блок кода.
  8. В блоке кода повторяется следующая последовательность действий:
    • Число m умножается на 10.
    • Пока m меньше или равно n, увеличивается значение переменной i.
    • Для каждого значения i от 1 до i-1 вычисляются остаток от деления m на n (ost[i]) и частное m/n (ch[i]).
    • Значение m обновляется как остаток от деления на n.
    • Если m равно ost[i], то для всех предыдущих значений i выполняется цикл write для вывода значения ch[k].
    • Значение konec устанавливается в 1.
  9. Конец блока кода.
  10. Выводится строка readln.
  11. Конец программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.1 из 5
Похожие ответы