0001 int shift1 ( int* A, int n, int k ) { //通过GCD(n, k)轮迭代,将数组循环左移k位,O(n) 0002 if ( k < 1 ) return 0; 0003 int mov = 0, s = 0; 0004 while ( mov < n ) { //O(GCD(n, k)) = O(n*k/LCM(n, k)) 0005 mov += shift ( A, n, s++, k ); 0006 } 0007 return mov; 0008 }