llllmz

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

3254:约瑟夫问题No.2C++

\

这题思路还是挺多的。

如果用数学的角度考虑。知道了n,p,m自然就知道下一个要出队的人的编号。然后一个个输出就行了。

还可以用循环链表做。

还可以用队列。出队在入队。

#include<iostream>
#include<queue>
using namespace std;
int main(){
int n , p , m ;
while(cin >> n >> p >> m){
if(n==0) break;
queue<int> q;
for(int i = 1;i<=n;i++){
q.push(i);
}
for(int i =1;i<p;i++){
int t=q.front();
q.pop();
q.push(t);
}
int flag=0;
while(!q.empty()){
for(int i =1;i<m;i++){
int t=q.front();
q.pop();
q.push(t);
}
int t=q.front();
q.pop();
if(!flag){
cout << t;
flag=1;
}else{
cout << ',' << t ;
}
}
cout << '\n';
}
return 0;
}

结果:

posted on   神奇的萝卜丝  阅读(42)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示