Как я могу по модулю, когда мои числа начинаются с 1, а не с нуля?

Думаю, решение для этого довольно простое, но я некоторое время думал об этом и не смог придумать элегантного решения.

У меня есть диапазон чисел, например 1..10 = (1,2,3,4, 5,6,7,8,9,10) , который является круглым, означает, что число после последнего снова является первым ( next (10) = 1 ).

Для данного числа i> 0 в диапазоне, я хотел бы для вычисления следующего m -го и предыдущего m -го числа. например следующий (5,1) = 6 следующий (10,1) = 1 следующий (10,2) = 2 предыдущий (5,2) = 3 предыдущий ( 1,1) = 10 prev (1,2) = 9 .

Для next я могу просто взять (i + m)% n , где n - длина диапазона (в примере n = 10 ). Но для prev я не смог найти элегантного решения.

27
задан Dave Sherohman 27 September 2010 в 12:43
поделиться