思路:直接模拟过程,用vis[i]表示第i个人是不是被淘汰了。用now表示当前的报数。
如果当前vis[i]==0 说明没被淘汰,然后判断是否要被淘汰,报数值now要加1
#include<bits/stdc++.h>
using namespace std;
const int N=1<<10;
bool vis[N];
int main(){
int n,k;cin>>n>>k;
int num=n,now=1;
while(num>1){
for(int i=1;i<=n&&num>1;i++){
if(!vis[i]){
if(now%10==k || now%k==0){
vis[i]=1;
num--;
}
++now;
}
}
}
for(int i=1;i<=n;i++) if(!vis[i]) cout<<i;
return 0;
}