代码:
#include<iostream>
using namespace std;
int s; // 代表没有被淘汰的人的数量
typedef struct {
int number; //编号 从1开始
int shuzi;
bool compare; // 用来标记是否被淘汰
}student;
int main()
{
int n, k;
cin >> n >> k;
s = n;
student* p = new student[n+1];
for (int i = 1; i < n + 1; i++) //初始化
{
p[i].number = i;
p[i].shuzi = 0;
p[i].compare = true;
}
int temp=0;
while (s != 1) //最后只有一个人就结束游戏
{
for (int i = 1; i < n + 1; i++) // 进行第一圈游戏
{
if (p[i].compare == true) // 没有被淘汰
{
p[i].shuzi = 1+temp;
temp = p[i].shuzi;
if (p[i].shuzi % k == 0 || p[i].shuzi % 10 == k) //数字是k的倍数 ,或者最后一个数是k
{
p[i].compare = false; // 淘汰
s--;
}
}
if (s == 1)
break;
}
}
for (int i = 1; i < n + 1; i++)
{
if (p[i].compare == true)
{
cout << p[i].number;
}
}
}