2 个赞
求回复
2 个赞
由于 n \le 1000, 所以可以直接 O(n) 按题意模拟。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> n;
queue<int> q;//定义队列
for (int i = 1; i <= n; ++i) q.push(i);//处理初始牌堆。
while (q.size() > 2)//由题意所述,当牌堆剩余大于2张牌时
{
cout << q.front() << ' ';//输出扔掉的
q.pop();//扔掉第一张
q.push(q.front());//将新一张放在牌堆底
q.pop();//移走重复的。
}
cout << q.front() << "\n";//最后两张上面一张要输出扔掉,然后下面的就是最后剩下的。
q.pop();
cout << q.front();
return 0;
}
。。。觉得应该解释的很清楚了吧qwq
2 个赞
能把错误的数据下载下来发一下吗,我看看哪里的问题
毕竟我就测了个样例就发了。
没法看

