#include <stdio.h>
int a[1005];
void shift(int x,int n)
{
int i,b[1005],j=1;
for(i=x+1;i<=n;i++)
{
b[j++]=a[i];
}
for(i=x;i>=1;i--)
{
a[i+n-x]=a[i];
}
for(i=1;i<j;i++)
{
a[i]=b[i];
}
}
void flip(int n)
{
int i;
if(n%2!=0)
{
int loc=(n-1)/2;
for(i=loc;i>loc/2;i--)
{
int temp=a[i];
a[i]=a[loc+1-i];
a[loc+1-i]=temp;
}
}
else
{
int loc=n/2;
for(i=loc;i>loc/2;i--)
{
int temp=a[i];
a[i]=a[loc+1-i];
a[loc+1-i]=temp;
}
}
}
int main()
{
int i,j,n,k,x;
while(scanf("%d%d",&n,&k)!=EOF&&(n!=0||k!=0))
{
for(i=1;i<=n;i++)
a[i]=i;
for(i=0;i<k;i++)
{
scanf("%d",&x);
shift(x,n);
flip(n);
}
for(i=1;i<=n;i++)
printf("%d ",a[i]);
printf("\n");
}
return 0;
}
/**************************************************************
Problem: 1479
User: cust123
Language: C++
Result: Accepted
Time:10 ms
Memory:1024 kb
****************************************************************/
題目1479:移位和旋轉
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.