循环删除元素,返回最后一个被删除元素的下标
输入一个整数n(n大于等于2,小于等于1000),则从i=2开始每隔两个元素在数组arr[n]中删除该元素,可以在数组中循环,请返回最后一个被删除元素的下标:
#include<iostream>
#include<vector>
using namespace std;
int search(int n){
vector<int>visited(n,0);
if(n==2){
return 1;
}
int count=0;
int i=2;
while(true){
visited[i]=1;
count++;
if(count==n){
return i;
}
int count2=0;
while(visited[i]==1||count2<2)
{
if(visited[i]==0){
count2++;
}
i++;
i=i%n;
}
}
}
int main(){
int n;
while(cin>>n){
cout<<search(n)<<endl;
}
}