桌上有
n
(
n
≤50
)张牌,从第一张牌(即位于顶面的牌)开始,从上往下依次编号为
1
~
n
。当至少还剩下两张牌时进行以下操作:把第一张牌扔掉,然后把新的第一张牌放到整叠
牌的最后。输入每行包含一个
n
,输出每次扔掉的牌以及最后剩下的牌。
#include<iostream>
#include<queue>
using namespace std;
main()
{ int n;
while(cin>>n) {
queue<int> a;
for(int i=1;i<=n;i++)
a.push(i);
cout<<"discard:";
while(n>1)
{ cout<<a.front();
a.pop();
if(n>2)
cout<<",";
a.push(a.front());
a.pop();
n--;
}
cout<<"\n";
cout<<"remaining card:"<<a.front();
}
return 0;
}
#include<queue>
using namespace std;
main()
{ int n;
while(cin>>n) {
queue<int> a;
for(int i=1;i<=n;i++)
a.push(i);
cout<<"discard:";
while(n>1)
{ cout<<a.front();
a.pop();
if(n>2)
cout<<",";
a.push(a.front());
a.pop();
n--;
}
cout<<"\n";
cout<<"remaining card:"<<a.front();
}
return 0;
}