Если вы посчитаете итерации внутреннего цикла, вы получите:
1 2 3 4 5 6 7 8 9 10
Чтобы получить сумму за произвольное количество итераций, вы можете «обернуть» числа следующим образом:
0 1 2 3 4
9 8 7 6 5
Теперь, если мы добавим каждый из этих столбцов, все будут добавлены к 9 (N-1), и будет 5 (N / 2) столбцов. Совершенно очевидно, что для любого четного N мы все равно получим N / 2 столбцов, каждый из которых суммируется с (N-1). Таким образом, когда общее число итераций четное, общее количество итераций всегда (N / 2) (N-1), которое (благодаря коммутативному свойству) мы можем переписать как N ( N-1) /2.
Если бы мы делали то же самое для нечетного числа итераций, у нас был бы один «нечетный» столбец, который не мог быть связан. В этом случае мы можем игнорировать «0», так как мы знаем, что это не повлияет на общую сумму в любом случае. Например, давайте рассмотрим N = 9 вместо N = 10. За это получаем:
1 2 3 4
8 7 6 5
Это дает нам (N-1) / 2 столбца (9-1 = 8, 8/2 = 4), каждый из которых складывается в N, поэтому сумма будет N * (N-1) / 2. Хотя мы пришли к этому немного по-другому, это точное совпадение с формулой выше, когда N чётно. Опять же, кажется довольно очевидным, что это останется верным независимо от количества используемых столбцов (т. Е. Общего числа итераций).
Для любого N (нечетного или четного) сумма чисел от 0 до N-1 равна N * (N-1) /2.