这道题是简单运用了stl里vector的简单操作,具体就是先将顺序数字赋值进去
for(int i=1;i<=a;i++){
nums[i]=i;}
之后我们定义三个键值
int o=0;
int p=0;
int n=0;
其中o是到第几个的时候将元素抛出,p是一个将输出序列输出题目要求的一个键值,而n是储存元素的数组长度。当o==b时,这个时候就是该将当前元素抛出
o=0;
cout<<' '<<nums[n];
nums.erase(nums.begin()+n);
n--;
其中o必须换为初值,n对应元素位置必须前移,而当n超出长度时,我们必须将其赋值为1,便于操作进行下去。
主要代码为
#include<bits/stdc++.h>
using namespace std;
int main()
{ int a,b;cin>>a>>b;
vector<int>nums(a+1);
for(int i=1;i<=a;i++){
nums[i]=i;}
int o=0;
int p=0;
int n=0;
while(nums.size()!=1)
{
if(o==b&&p==0)
{
o=0;p=1;
cout<<nums[n];
nums.erase(nums.begin()+n);
n--;
}
else if(o==b)
{
o=0;
cout<<' '<<nums[n];
nums.erase(nums.begin()+n);
n--;
}
o++;n++;
if(n>=nums.size())n=1;
}
}