int gcd(int a, int b)
{
if (a == 0)
{
return b;
}
return gcd(b%a, a);
}
void ROL(int *a, int n, int k)
{
if (k == 0 || n == 0)
{
return;
}
k %= n;
int t, i, j, next;
for (i = 0; i < gcd(k, n); ++i)
{
t = a[i];
j = i;
while((next = (j+k)%n) != i)
{
a[j] = a[next];
j = next;
}
a[j]=t;
}
}
时间复杂度O(n),空间O(1)。
9288

被折叠的 条评论
为什么被折叠?



