По заданным 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.
Объяснение кода листинга программы
- В начале кода объявляются переменные ost, ch, m, n, n1, i, j, k, konec.
- Затем происходит чтение переменных m и n с помощью функции readln.
- Переменная m приводится к остатку от деления на n с помощью операции m := m mod n.
- Переменная n1 инициализируется значением n.
- Выводится строка
period=
для индикации начала периода. - Затем в цикле повторяется следующая последовательность действий:
- Если n1 mod 2=0, то n1 делится на 2.
- Если n1 mod 5=0, то n1 делится на 5.
- Цикл продолжается до тех пор, пока n1 не станет нечетным и не будет делиться на 5.
- После этого выводится значение n1.
- Если n1 равно 1, то выводится 0, иначе начинается следующий блок кода.
- В блоке кода повторяется следующая последовательность действий:
- Число 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.
- Конец блока кода.
- Выводится строка
readln
. - Конец программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д