题目大意:给定n张卡片,按照1-n的顺序编号,然后拿出一张卡片扔掉,拿出一张卡片放到最后,重复该操作直到只剩1张卡片。
求扔掉的卡片序列和最后剩的卡片的编号。
std::queue+模拟
#include <iostream>
#include <queue>
using namespace std;
queue<int>q;
int main()
{
int n;
while(cin>>n&&n!=0)
{
for(int i=1;i<=n;i++)
q.push(i);
cout<<"Discarded cards:";
while(q.size()!=1)
{
cout<<" "<<q.front();
if(q.size()>2)
cout<<",";
q.pop();
q.push(q.front());
q.pop();
}
cout<<endl;
cout<<"Remaining card: "<<q.front()<<endl;
q.pop();
}
return 0;
}