失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 杀人游戏-约瑟夫问题

杀人游戏-约瑟夫问题

时间:2023-10-25 05:35:22

相关推荐

杀人游戏-约瑟夫问题

背景: 在罗马人占领乔塔帕特后,39 个犹太人与约瑟夫及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。约瑟夫和他的朋友不想死那么早,于是他希望你帮忙确定这些人自杀的顺序,以便他们自己最后自杀。

由于约瑟夫经常坑队友一起自杀,所以需要应对不同的情况,即给定不同的n和k,要求输出每个人被杀死的顺序。

输入格式

一行两个数,第一个表示人数n,第二个表示报数到第k个人需要自杀

输出格式

一行n个数,表示这些人自杀的顺序

样例

####样例输入

4 2

Copy

####样例输出

4 1 3 2

#include<iostream>#include<cmath>#include<cstdio>using namespace std;const int N=1e3+10;int main(){int a[N],ans[N];int n,k,m;cin>>n>>k;m=n;memset(a,0,sizeof(a));memset(ans,0,sizeof(ans));int fg=0;for(int i=0;m;i=(i+1)%n){fg+=!a[i];if(fg==k){a[i]=1;m--;ans[i]=n-m;fg=0;}}for(int i=0;i<n;i++){if(i==n-1)printf("%d\n",ans[i]);elseprintf("%d ",ans[i]);}return 0;}

如果觉得《杀人游戏-约瑟夫问题》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。