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

Даны два целых положительных числа M, N. Требуется найти все «дружественные» пары чисел на отрезке [M; N]. Дружественным для числа А является такое число В, что
оно равно сумме делителей А, исключая само значение А. И наоборот, сумма делителей В,
исключая В, равняется А. A не равно B.

Input
Со стандартного устройства ввода в первой строке через пробел вводятся два целых
положительных числа M (2<=M<=10 5 ) и N (2<=M<=N<=10 5 ).
Output
Требуется вывести все пары «дружественных» чисел, расположенные на отрезке [M; N].
Пару «дружественных» чисел (E, F) нужно выводить раньше пары «дружественных»
чисел (K, P), когда минимальный элемент пары «дружественных» чисел (E, F) меньше
минимального элемента пары «дружественных» чисел (K, P).
Число E в паре «дружественных» чисел (E, F) нужно выводить раньше числа F из этой
же пары, когда Е меньше F.
Числа в паре нужно разделять пробелом, ставить пробел после второго члена пары
не нужно.
Sample Input
210
Sample Output
220
Примечание
Попробуйте реализовать функцию getSumOfDivisors(n), которая принимает число n, а
возвращает сумму делителей числа n, кроме самого n.

Показать ответ
Ответ:
Tipudi228
Tipudi228
30.03.2021 17:11
// PascalABC.NET 3.2, сборка 1417 от 28.03.2017
// Внимание! Если программа не работает, обновите версию!

unit ASM;

interface

  type SF=(integer,integer);
  function AddSF(a,b:SF):SF;
  function SubSF(a,b:SF):SF;
  function MultSF(a,b:SF):SF;
  function DivSF(a,b:SF):SF;
 
implementation
 
  function Gcd(p:SF):integer;
  begin
    (var a,var b):=p;
    a:=abs(a); b:=abs(b);
    while b>0 do (a,b):=(b,a mod b);
    Result:=a
  end;
 
  function ReductSF(p:SF):SF;
  begin
    var t:=Gcd(p);
    if t>1 then Result:=(p[0] div t,p[1] div t)
    else Result:=p
  end;
 
  function AddSF(a,b:SF):=ReductSF((a[0]*b[1]+a[1]*b[0],a[1]*b[1]));
 
  function SubSF(a,b:SF):=ReductSF((a[0]*b[1]-a[1]*b[0],a[1]*b[1]));

  function MultSF(a,b:SF):=ReductSF((a[0]*b[0],a[1]*b[1]));
    
  function DivSF(a,b:SF):=ReductSF((a[0]*b[1],a[1]*b[0]));
 
end.

Пример работы с модулем

uses ASM;

begin
  var a:=(5,24);
  var b:=(7,8);
  var c:=AddSF(a,b);
  Writeln(a[0],'/',a[1],'+',b[0],'/',b[1],'=',c[0],'/',c[1])
end.

Результат

5/24+7/8=13/12
0,0(0 оценок)
Ответ:
Беня2018
Беня2018
14.04.2020 10:53
3 (4 6 *) + 8 2 - * 2 3 4 5 * 6 + 7 + 8 4 2 * 3 4 9 + 3 4 + * 5 + + * + + * * *
4*6=24
(3 24 +) 8 2 - * 2 3 4 5 * 6 + 7 + 8 4 2 * 3 4 9 + 3 4 + * 5 + + * + + * * *
3+24=27
13 (8 2 -) * 2 3 4 5 * 6 + 7 + 8 4 2 * 3 4 9 + 3 4 + * 5 + + * + + * * *
8-2=6
(27 6 *) 2 3 4 5 * 6 + 7 + 8 4 2 * 3 4 9 + 3 4 + * 5 + + * + + * * *
27*6=162
162 2 3 (4 5 *) 6 + 7 + 8 4 2 * 3 4 9 + 3 4 + * 5 + + * + + * * *
4*5=20
162 2 3 (20 6 +) 7 + 8 4 2 * 3 4 9 + 3 4 + * 5 + + * + + * * *
20+6=26
162 2 3 (26 7 +) 8 4 2 * 3 4 9 + 3 4 + * 5 + + * + + * * *
26+7=33
162 2 3 33 8 (4 2 *) 3 4 9 + 3 4 + * 5 + + * + + * * *
4*2=8
162 2 3 33 8 8 3 (4 9 +) 3 4 + * 5 + + * + + * * *
4+9=13
162 2 3 33 8 8 3 13 (3 4 +) * 5 + + * + + * * *
3+4=7
162 2 3 33 8 8 3 (13 7 *) 5 + + * + + * * *
13*7=91
162 2 3 33 8 8 3 (91 5 +) + * + + * * *
91+5=96
162 2 3 33 8 8 (3 96 +) * + + * * *
3+96=99
162 2 3 33 8 (8 99 *) + + * * *
8*99=792
162 2 3 33 (8 792 +) + * * *
792+8=800
162 2 3 (33 800 +) * * *
33+800=833
162 2 (3 833 *) * *
3*833=2499
162 (2 2499 *) *
2*2499=4998
162 4998 *
162*4998=809676

Эквивалентное выражение
(3+4*6)*(8-2)*2*3*(4*5+6+7+8+4*2*(3+(4+9)*(3+4)+5))

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