循环删除元素,返回最后一个被删除元素的下标

输入一个整数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;
	}
}
posted @ 2019-09-12 22:00  夜深不自知  阅读(260)  评论(0编辑  收藏  举报