Минимально возможная сума. Алгоритм

тестовое задание звучит так:

Description

Given an array X of positive integers, its elements are to be transformed by running the following operation on them as many times as required:

if X[i] > X[j] then X[i] = X[i] - X[j]

When no more transformations are possible, return its sum (“smallest possible sum”).

For instance, the successive transformation of the elements of input X = [6, 9, 21] is detailed below:

X_1 = [6, 9, 12] # -> X_1[2] = X[2] - X[1] = 21 - 9
X_2 = [6, 9, 6]  # -> X_2[2] = X_1[2] - X_1[0] = 12 - 6
X_3 = [6, 3, 6]  # -> X_3[1] = X_2[1] - X_2[0] = 9 - 6
X_4 = [6, 3, 3]  # -> X_4[2] = X_3[2] - X_3[1] = 6 - 3
X_5 = [3, 3, 3]  # -> X_5[1] = X_4[0] - X_4[1] = 6 - 3

The returning output is the sum of the final transformation (here 9).


Не понимаю, почему 1й шаг 21 - 9, а не 9 - 6.
Я понял что в первом проходе сравниваем елемент с позиции [0]: 6 ? 9, 6 ? 12. Затем позицию [1]: 9 ? 6; 9 ? 12. Вот здесь, на 1 етапе и будет соответствие заданию if X[i] > X[j] then X[i] = X[i] - X[j], а значит масив должен приобрести вид [6, 3, 21]

а без разницы в какой последовательности и какие пары сравнивать. Можно и случайным образом брать и из большего вычитать меньшее. Все равно в конечном счете один и тот же результат будет. Даже в условии ни чего не утверждаетcя об значениях i и j

ps

НОД же так находится, какое-то странное название у него

А они не пытались переназвать НОД, они хотят НОД(X) * len(X), который и обозвали “smallest possible sum”.