竞赛
考级
#include<bits/stdc++.h>\万能头 using namespace std; int main() { int k,n,p; cin>>k>>n>>p; queue<int>a; for(int i=1;i<=k;i++) { a.push(i); } while(!a.empty()) { cout<<a.front()<<" "; a.pop(); for(int i=0;i<p;i++) { a.push(a.front()); a.pop(); } } }
这是一个队列的问题,我们可以利用队列的性质来完成发牌(出队)与将牌放进底部(出队后再入队) 首先我们要生成这一副牌: 然后写一个放牌的函数: 整体即为(注意输出后要pop): 时间复杂度:O(k+k∗p)O(k+k*p)O(k+k∗p)
众所周知有个命令叫#define 所以可以这样做:
根据队列queue,我们可以得到:
提交答案之后,这里将显示提交结果~