一共n个数,从k开始找,找第m次,找到后将该数提出,下次从m+1位开始重复。

思路:最简单的思路就是用while一直找找到只剩一个数后结束循环,

第一个while(count<n-1)//我们一共要提出的数n-1个所以当count累加到n-1时程序结束

int i=0; // 记录找了几次

第二个whlie(i<m) //于第一同理

k=k%n;// 保证下标不会越界 当>5时 保证在n范围内无限 0 1 2 3 4

if(nums[k]!=-1) //如果这个数没被标记就交一次查找次数 { i++; }

if(i==m) //当等于第m次时将这次位置的数标记 { nums[k]=-1; //以-1为标记当作提出

count++;

}

k++;//

//以此类推 一直到数组n-1个数全被标记最后输出仅剩的数即可,题目要的是编号为了方便我是从0开始赋值的值即编号

#include <iostream>
using namespace std;

int main()
{
    int n,m,k,index[105],lastidex=0;
    
    cin>>n>>k>>m;
    
    for(int j=0;j<n;j++)
    {
        index[j]=j;
    }
  
    int count=0;
    while(count<n-1)
    {
        
        int i=0;
        while(i<m)
        {
            k=k%n;
           if(index[k]!=-1)
            {
               i++; 
            }
            
            if(i==m)
            {
                index[k]=-1;
                
                count++; 
            }
            
             k++;
            
        }
        
    }
  
    for(int i=0;i<n;i++)
    {
        if(index[i]>=0)
        {
            cout<<index[i];
        }
        
    }
    return 0;
}