约瑟夫问题下标从 $0$ 开始,每次 $k$ 变为 $(k+1)\bmod x$,另外我劝你不要在 `for` 循环里动 $i$,容易错。
```cpp
//我尽量保留原本的样子
#include<iostream>
using namespace std;
int main()
{
bool a[105];
int x,s,k=0;
cin>>x>>s;
int m=x;
for(int i=0;i<105;i++)a[i]=1;
for(int i=1;m;)
{
k++;
if(k>=x)k=0;
if(a[k]==0)
{
continue;
}
i++;
if(a[k]&&i==s)
{
cout<<k+1<<' ';
i=0;
a[k]=0;
m--;
}
}
return 0;
}
```
by 六楼溜刘 @ 2023-03-20 20:07:36
@[czy888](/user/817033)
```cpp
#include<iostream>
using namespace std;
int main(void)
{
bool a[105];
int x,s,k=0;
cin>>x>>s;
int m=x;
for(int i=1;i<105;i++)a[i]=1;
for(int i=1;m;i++)
{
k++;
if(k>x)k=1;//这里错了,k要初始化成1,因为后面还要用k
if(a[k]==0)//这里用了k,按照你之前的写法,k=0,错了!
{
i--;
continue;
}
if(a[k]&&i==s)//这里也是一样
{
cout<<k<<' ';
i=0;
a[k]=0;
m--;
}
}
return 0;
}
```
以后注意下QwQ
~~求关注~~
by bitset_iTM @ 2023-03-20 20:13:53
@[czy888](/user/817033)
还有if判断不是k>=x而是k>x.
by bitset_iTM @ 2023-03-20 20:18:46
谢谢改对了
by czy888 @ 2023-03-22 19:31:15
@[WhriterStudioWHC](/user/697898) 可以给你关注
by czy888 @ 2023-03-22 19:31:56
@[czy888](/user/817033) qwqwq
by bitset_iTM @ 2023-03-23 11:11:13