一、题目描述
二、代码
#include<iostream>
using namespace std;
int main()
{
int n;//新建变量n
int m;//新建变量m
cin >>n;//键盘输入n
cin >>m;//键盘输入m
int a[n];//初始化数组
for(int i=0;i<n;i++)
{
a[i] = i+1;
}
int* p = &a[0];//指针指向数组的第一个元素
int people = n;//人数
int num = 0;//计数器置零
while(1)
{
if(*p!=0)//如果元素不为0,
{
num++;//则计数器+1
if(num == m)//计数器到达
{
cout << *p << " ";//打印剔除元素
*p=0;//将剔除元素置零
num = 0;//计数器置零
people--;//人数-1
if(people == 0)//如果人数为零
{
break;//结束
}
}
}
if(p == &a[n-1])//如果到达数组末尾
{
p = &a[0];//重置指针
continue;//跳转
}
p++;//指针偏移
}
return 0;
}
三、思路
模拟了手工在纸上点数画圈的过程。