描述
東哥是個鄉村魔術師,COVID-19疫情期間閒來無事,用撲克牌給鄰居們表演了一場小魔術:
他將一疊預先洗好的撲克牌背面朝上拿在手中,先將最上面的撲克牌放到最下面,然後打開現在最上面的這張撲克牌,並放到邊上,這是一張1;
然後又將最上面的撲克牌放到最下面,再次打開最上面的撲克牌,這次是一張2;
他依次重複這兩個步驟:(1)將最上面的放到最下面,(2)打開最上面的這張撲克牌,最終打開的撲克牌依次是:1,2,3,4……
鄰居們都猜不出原來這疊撲克牌是怎麼放的,現在請你幫忙用計算機算一下,東哥手上這疊牌從上往下是怎麼排的呢?
例如東哥手上有10張撲克牌,則一開始撲克牌應該是這麼放的:
8 1 6 2 10 3 7 4 9 5
又比如有13張撲克牌,則一開始撲克牌的順序應該是:
7 1 12 2 8 3 11 4 9 5 13 6 10
格式
輸入格式
輸入只有一個數據n(2≤n≤1000),表示撲克牌的張數
輸出格式
輸出一行數據,表示撲克牌原來的順序
樣例
輸入樣例
5
輸出樣例
3 1 5 2 4
限制
時間限制:100 ms
內存限制:32767 KB
提示
把這疊牌想象成一個隊列
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
scanf("%d",&n);
deque<int> Q;
Q.push_back(n);
int temp;
while(--n)
{
if(n == 0)
break;
Q.push_front(n);
temp = Q.back();
Q.pop_back();
Q.push_front(temp);
}
while(Q.size()!=1)
{
temp = Q.front();
Q.pop_front();
printf("%d ",temp);
}
temp = Q.front();
printf("%d",temp);
return 0;
}