111,129
社区成员
发帖
与我相关
我的任务
分享 static void Main(string[] args)
{
int[] a = {17,20,63,82,47,52,13,74,38,60,31,96,86,78,26,51,39,49,95,64,78};
x(a, 5, 6);
Console.WriteLine(string.Join(",", a));
//52,13,74,38,60,31,17,20,63,82,47,96,86,78,26,51,39,49,95,64,78
x(a, 6, 4);
Console.WriteLine(string.Join(",", a));
//17,20,63,82,52,13,74,38,60,31,47,96,86,78,26,51,39,49,95,64,78
}
static void x(int[] a, int m, int n)
{
int g = gcd(m, n);
for (int s = 0; s < g; s++)
{
int p = a[s];
int k = s;
while (true)
{
int z = (k + m) % (m + n);
a[k] = a[z];
if (z == s)
{
a[k] = p;
break;
}
else k = z;
}
}
}
static int gcd(int a, int b)
{
if(a % b > 0)
return gcd(b, a % b);
else
return b;
}
但仍看不出在干什么