1.杂技翻转
#include <stdio.h>
int gcd(int i, int j)
{
while (i != j)
if (i > j)
i -= j;
else
j -= i;
return i;
}
int main()
{
freopen("datain.txt", "r", stdin);
int i, rotdist, n;
char x[] = {"12345678"};
scanf("%d %d", &rotdist, &n);
for (i = 0; i < gcd(rotdist, n); i++)
{
int k, t = x[i], j = i;
while(1)
{
k = j + rotdist;
if (k >= n)
k -= n;
if (k == i)
break;
x[j] = x[k];
j = k;
}
x[j] = t;
}
printf("%s", x);
getch();
return 0;
}
2.元素求逆翻转
#include <stdio.h>
char a[] = {"123456789"};
void reverse(int pos, int n)
{
int i;
for (i = pos; i < (n+pos+1)/2; i++)
{
char t = a[i];
a[i] = a[n+pos+1 - i - 1];
a[n+pos+1 - i - 1] = t;
}
return ;
}
int main()
{
int rotdist =3, n = 9;
reverse(0, 2);
reverse(3, 8);
reverse(0, 8);
printf("%s", a);
getch();
return 0;
}