求调,悬关
  • 板块灌水区
  • 楼主chenxi797
  • 当前回复9
  • 已保存回复9
  • 发布时间2023/10/6 20:12
  • 上次更新2023/11/2 15:09:49
查看原帖
求调,悬关
735165
chenxi797楼主2023/10/6 20:12

题目:

题目描述
约瑟夫问题是个有名的问题:N个人围成一圈,从第一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。请写一个程序,求出最后会剩下的人的编号。

输入
输入只有一行,为两个整数n,m(0<n,m<10^8)。

输出
只有一行,一个数,为剩下最后一个人的编号

样例输入
6 5
样例输出
1

我的代码:

#include <bits/stdc++.h>
using namespace std;
int a[10000005];
int main()
{
	int n,m;
	cin >> n >> m;
	int count = 0,k = -1;
	while (count < n - 1)
	{
		int i = 0;
		while (i < m)
		{
			k = (k + 1) % n;
			if (a[k] == 0)
			{
				i++;
				if (i == m)	a[k] = -1,count++;
			}
		}
	}
	for (int i = 0;i < n;i++)
	{
		if (a[i] == 0)
		{
			cout << i + 1;
			break;
		}
	}
}

2个RE5个TLE4个AC

数组可能开小了但是再多加个0就直接全RE

这题数据很大,求调(验证码nb83

2023/10/6 20:12
加载中...