he l p

P1996 约瑟夫问题

约瑟夫问题下标从 $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


|