>>543
void rotate( unsigned char n[], int N, int m ) {
  int i, j;
  m %= N;
  if (m < 0) m += N;
  for (i = 0; i < m; i ++) {
    for (j = i + m; j < N; j += m) swap(& n[i], & n[j]);
    swap(& n[i], & n[j - N]);
  }
}
スワップ自分で書いて。