Написать программу на паскале.дано n целых чисел. найти среди них пару чисел, для которых наименьшее общее кратное имеет наименьшее значение.
144
314
Ответы на вопрос:
Const m = 50; function nok(a, b: integer): integer; var c: integer; begin if a = b then nok : = a else begin c : = a * b; repeat if a > b then a : = a - b else b : = b - a; until a = b; nok : = c div a end end; var a: array[1..m] of integer; i, j, n, p, q, nk, mn: integer; begin randomize; write('введите количество элементов в массиве (2..50)- '); readln(n); writeln('исходный массив'); for i : = 1 to n do begin a[i] : = random(100) + 1; write(a[i], ' ') end; writeln; p : = a[i]; q : = a[2]; mn : = p * q; for i : = 1 to n - 1 do for j : = i + 1 to n do begin nk : = nok(a[i], a[j]); if (mn > nk) then begin p : = a[i]; q : = a[j]; mn : = nk end end; writeln('пара: ', p, '-', q, ' нок=', mn); end. тестовое решение: введите количество элементов в массиве (2..50)- 20 исходный массив 19 36 99 86 79 83 73 69 27 14 87 67 49 84 98 79 38 4 60 22 пара: 14-4 нок=28
Function nok(a, b: integer): integer; var c, d, e: integer; begin c : = a; d : = b; while (d > 0) do begin c : = c mod d; e : = c; c : = d; d : = e; end; result : = (a div c) * b; end; const n = 4; var a: array [1..n] of integer; b: array [1..n*n] of integer; i, j, min_: integer; begin writeln('введите n целых чисел, только вот давайте без нулей, детсадовцы знают, что на 0 делить нельзя, плохо это'); min_ : = 2147483647; for i : = 1 to n do readln(a[i]); for i : = 1 to n do for j : = 1 to n do begin if (i = j) then continue; b[i + n * (j - 1)] : = nok(a[i], a[j]); min_ : = min(b[i + n * (j - 1)], min_); end; write(' '); for i : = 1 to n do write(i: 5); writeln(); for i : = 1 to n do begin write(i: 5); for j : = 1 to n do write(b[i + n * (j - 1)]: 5); writeln(); end; writeln('min: ', min_); end.
Что-то у меня не придумывается меньше, чем за 18 телодвижений. 1. залил полный бак в 10-литровый 2. перелил его в 9-литровый. в 10 остался 1 литр 3. 9 опустошил, теперь в нём пусто, а в 10 по-прежнему 1 л. 4. перелил 1 л в 9. этот 1 литр - назовём его переходящим остатком. опять погнали те же 4 телодвижения, по результатам переходящим остатком будет 2 литра. ещё раз - и получили переходящий остаток 3 литра ещё раз, и получили 4 литра. к этому моменту сделали этот цикл уже 4 раза, итого 4*4 = 16 движений. опять делаем этот же цикл, но достаточно двух первых операций, и в 10-литровом баке получаем остаток 5 литров. итого, 16+2 = 18. ну, у меня так получилось. может кто лучше придумает.
Реши свою проблему, спроси otvet5GPT
-
Быстро
Мгновенный ответ на твой вопрос -
Точно
Бот обладает знаниями во всех сферах -
Бесплатно
Задай вопрос и получи ответ бесплатно
Популярно: Информатика
-
Сорим28.04.2023 07:56
-
djsxv26.09.2022 03:45
-
diiann22.07.2022 12:07
-
godofwar17127.10.2020 21:26
-
Макс33221101.03.2020 17:25
-
Victoria123645626.09.2021 21:48
-
ника254529.11.2021 07:36
-
rishik6519.08.2021 22:59
-
ната114217.04.2022 10:49
-
аминат4109.10.2020 17:48
![Caktus Image](/tpl/img/cactus.png)
Есть вопросы?
-
Как otvet5GPT работает?
otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса. -
Сколько это стоит?
Проект находиться на стадии тестирования и все услуги бесплатны. -
Могу ли я использовать otvet5GPT в школе?
Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое! -
В чем отличия от ChatGPT?
otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.