代码:
#include <iostream>
using namespace std;
int main(void)
{
int n;
cin >> n;
int k;
cin >> k;
int a[1000];
bool b[1000];
int count = 0;
int live = n;
int temp;
for (int i = 0; i < n; i++)
{
a[i] = 0;
b[i] = true;
}
while (live != 1)
{
for (int j = 0; j < n; j++)
{
if (b[j])
{
count++;
a[j] = count;
if (a[j] % k == 0)
{
b[j] = false;
live--;
}
else
{
if (a[j] % 10 == k) {
b[j] = false;
live--;
}
}
}
}
}
for (int k = 0; k < n; k++) {
if (b[k]) {
cout << k + 1 << endl;
}
}
system("pause");
return 0;
}
注意求一个数最末位的数值,只要将其%10即可。
此题应注意的一个问题是,目前这个代码的的分数是 90,显示有一数据运行超时,目前还没有找到解决的方式。