И снова задача на длинную арифметику и/или на математику. Сначала внимательно читаем условие: Важно при прочтении обратить внимание, что надо найти НОД не входных чисел, а чисел, состоящих из n и m единиц. Если мы пишем решение на Python, то можем воспользоваться всей мощностью языка и сделать ровно то, как описано в задаче: Здесь мы довольно хитро построили длинные числа - сначала построили строки из единичек нужной длины, а потом преобразовали их к числовому типу данных. Чтобы лучше понять алгоритм Евклида, напишем решение без использования длинной арифметики. Нам понадобится пара свойств НОД: Давайте посмотрим, как это будет работать для чисел из единичек. Сначала из большего числа (N = '1' * n) вычтем меньшее (M = '1' * m): N - M = 11...11100...000 = 11...111 * 100...000 Если теперь применить второе свойство (мультипликативность): НОД(N, M) =
НОД(N - M, M) =
НОД(11...111 * 100...000, M) =
НОД(11...111, M) * НОД(100...000, M) =
НОД(11...111, M) Здесь мы сразу воспользовались тем