题目大意: 花式丢牌。 取出牌的第一张,丢一张,再让新的插入牌最后。
思路:这种题目即思路。队列模拟。
#include<bits/stdc++.h>
using namespace std;
queue<int> q;
vector<int> dis;
int main()
{
int n;
while(~scanf("%d",&n) && n)
{
while(!q.empty())
q.pop();
dis.clear();
for(int i = 1; i <= n ; i++)
q.push(i);
while(q.size() > 2)
{
int x = q.front();
dis.push_back(x);
q.pop();
x = q.front();
q.pop();
q.push(x);
}
if(q.size() == 2)
{
dis.push_back(q.front());
q.pop();
}
printf("Discarded cards:");
for(int i = 0; i < dis.size(); i++)
{
i==0?printf(" %d",dis[i]):printf(", %d",dis[i]);
}
printf("\n");
printf("Remaining card: %d\n",q.front());
}
return 0;
}