链接:
2682. 找出转圈游戏输家
题意:
环形1到n,从1开始,每次移动 第i次*k ,当移动到出现过的序号时停下,
求没移动到的数字
解:
简单模拟题,我也以为有数学做法,可恶
实际代码:
#include<bits/stdc++.h>
using namespace std;
vector<int> circularGameLosers(int n, int k)
{set<int>get;get.insert(1);vector<int>ans;int now=1,nextMove=k;while(true){now=(now+nextMove-1)%n+1;if(get.count(now)==1) break;get.insert(now);nextMove+=k;}//cout<<endl;for(int i=1;i<=n;i++) if(get.count(i)==0) ans.push_back(i);return ans;
}
int main()
{int n,k;cin>>n>>k;vector<int>ans=circularGameLosers(n,k);for(auto& a:ans) cout<<a<<endl;return 0;
}
限制:
1 <= k <= n <= 50