>>543
わり、早とちりした。

void rotate( unsigned char n[], int N, int m ) {
  int i, j, rem;
  m %= N;
  if (m < 0) m += N;
  while (N - m) {
    for (i = 0; i < m; i ++) for (j = i + m; j < N; j += m) swap(& n[i], & n[j]);
    rem = N % m; N = m; m = N - rem;
  }
}