游戏
from CCF-CSP 2017-12-2
Time limit:1s
Memory limit:256MB
考虑到玩家退出,那么我用到了set,哪个玩家出局了,那么就将该玩家从set中去掉。
ac代码:
#include<iostream>
#include<set>
using namespace std;
int n,k,num; //n,k,记录报数的数字
set<int> s;
int main(){
cin>>n>>k;
int note = n;
for(int i = 1;i <= n;++i)
s.insert(i); //n个玩家
auto it = s.begin(); //从第一个玩家开始报数
while(note > 1){
++num;
if(num % k == 0 || num % 10 == k){ //满足情况,玩家出局
auto is = it;++it;s.erase(is),--note;
}
else
++it;
if(it == s.end())
it = s.begin(); //是一个圈,循环
}
cout<<*s.begin();
return 0;
}