求解,求解,题目不会写


最好有解释

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 个赞


额,差点ac

2 个赞

能把错误的数据下载下来发一下吗,我看看哪里的问题

毕竟我就测了个样例就发了。

没法看