题解 | #约瑟夫环#

约瑟夫环

https://ac.nowcoder.com/acm/problem/22227

using namespace std;
int a[40];
int main()
{

	int n,k,m;cin>>n>>k>>m;
	//把1-(k-1)之间所有的数,放在n之后
	for(int i=1;i<=n;i++) a[i]=i;
	int t=1;
	for(int i=n+1;i<=n+k-1;i++)
	{
		a[i]=a[t];
		t++;
	}

	//接下来只要对 n+1 到 n+k进行操作即可

	// for(int i=k;i<n+k;i++)cout<<a[i]<<" ";
	// cout<<endl;

	int s=0;
	while(n)
	{
		int t=a[k];
		s++;
		for(int i=k+1;i<n+k;i++)a[i-1]=a[i];
		if(s==m)
		{
			s=0;
			
		    if(n==1)cout<<t;
		    n--;
		}
		else
		{
			a[n+k-1]=t;
		}
	}






	return 0;
}
全部评论

相关推荐

06-28 22:48
已编辑
广东金融学院 Java
小浪_Coding:学院本+这俩项目不是buff叠满了嘛
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务