这道题我们可已用优先队列来做,代码如下:
#include<bits/stdc++.h>//万能头文件
using namespace std;//好习惯
priority_queue <int,vector<int>,greater<int> > x;//定一个优先队列
queue<int> y;//定一个普通队列
int main()
{
int n,k,p;//定3个函数
cin >> n >> k >> p;//输入
for(int i=1; i<=k; i++)//循环把y这个普通队列赋上值
{
y.push(i);
}
while(y.size())//如果牌全部发完就不循环了
{
for(int i=1; i<=n; i++)//为每个人的纸牌
{
if(i==n)//如果到他了,就将这个牌的值给x
{
x.push(y.front());
y.pop();
}
else
{
y.pop();
}
for(int j=1; j<=p; j++)//把牌移到底下
{
y.push(y.front());
y.pop();
}
}
}
while(x.size())//输出
{
cout << x.top() << endl;
x.pop();
}
}
希望有大佬指点指点,也希望能关注关注,谢谢