问题描述
思路
变量cnt
表示还有多少位小朋友未出局,用于控制循环结束
变量no
负责数数,直到最后只剩一位小朋友
变量i
负责控制小朋友的轮数,当i%n==0
的时候,从第一位小朋友重新开始报数
完整代码
#include<iostream>
#include<string.h>
using namespace std;
const int MAX = 1010;
bool child[MAX]; //true:未出局 false:出局
int n, k;
int main()
{
cin >> n >> k;
memset( child, true, sizeof(child));
int cnt = n; //记录还没出局的小朋友数量,用于控制循环结束
int i = -1; //控制轮数
int no = 0; //数数
while( cnt > 1)
{
i++;
i = i%n;
if( child[i] )
{
no++;
if( no%10 == k || no%k == 0 )
{
child[i] = false;
cnt--;
}
}
}
for( int i = 0; i < n; i++)
{
if( child[i] )
cout << i+1;
}
return 0;
}