队列实现
注意:k可以等于1,队列为空,但需要返回最后一个编号,因此要另外判断(之前没注意只有90分)
#include<bits/stdc++.h>
#define maxnn 1000005
using namespace std;
typedef long long ll;
queue<int> q;
int main()
{
int n,k;
cin>>n>>k;
int t=n+1;//第二轮报数起始值
for(int i=1;i<=n;i++)
{
if(i%k!=0 && i%10!=k)
q.push(i);
}
while(!q.empty())
{
if(q.size()==1)//剩下一个小朋友则退出
break;
int x = q.front();
q.pop();
if(t%k!=0 && t%10!=k)
{
q.push(x);//留下的小朋友编号继续插入队尾
}
t++;
}
if(q.empty())//当k=1时,返回最后一个小朋友编号
cout<<n;
else cout<<q.front();
return 0;
}