思路:直接模拟过程,用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;
}
这篇博客介绍了一个C++程序,用于模拟一个报数游戏。游戏中,当玩家报的数是k的倍数或者k的余数为0时,该玩家将被淘汰。程序通过迭代和标记方法确定最后剩下的玩家。
536

被折叠的 条评论
为什么被折叠?



