#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
const int maxn = 100010;
int visit[1100];
int main()
{
int n, k, num = 0;
cin >> n >> k;
int ans, cont;
while(1)
{
cont = 0;
for(int i = 1; i <= n; i++)
{
if(!visit[i])
{
num++;
if(num % k == 0 || num % 10 == k) visit[i] = 1;
else
{
cont++;
ans = i;
}
}
else continue;
}
if(cont == 1) break;
}
cout << ans;
return 0;
}
利用队列模拟 很像天梯赛的彩虹瓶
#include <iostream>
#include <cstdio>
#include <vector>
#include <queue>
using namespace std;
const int maxn = 100010;
int visit[1100];
int main()
{
queue<int> q;
int n, k, num = 1;
cin >> n >> k;
for(int i = 1; i <= n; i++) q.push(i);
while(q.size() > 1)
{
int t = q.front();
q.pop();
if(num % k == 0 || num % 10 == k);
else
{
q.push(t);
}
num++;
}
cout << q.front();
return 0;
}