Я думаю, что должно подойти следующее:
sequence[0] = 0;
For k!=0,
<s>sequence[k] = (sequence[k-1]+D)%N;</s>
sequence[k] = ( (temp=(sequence[k-1]+D)) / N)? ++sequence[0]: temp%N;
Здесь temp - временная переменная, введенная во избежание избыточности в выражении на RHS.
Я знаю, что это сложно, ноЯ уверен, что это правильно.После того, как все значения установлены, вы можете сбросить последовательность [0] на 0, и все.
PS: Я пытаюсь получить закрытую форму.