一个关于约瑟夫环的编程问题

发布于 2022-09-01 06:59:11 字数 557 浏览 15 评论 0

简介
约瑟夫环问题是一个古老的问题。假设有n个人围成一个圈,从其中一个人开始以顺时针方向
开始报数,报到数2的人出列,下一个人继续从1开始报。(这会导致这个圈越来越小)直到只剩下
最后一个人为止。

例子:假设又10个人组成一个圈,那么出列的顺序分别是编号为2, 4, 6, 8, 10, 3, 7, 1, 9。
那么第5个人剩下。

现在,我们定义一个函数J(n),自变量n为有n个人围成一个圈,因变量则是剩下的那个人的编号。
则有:J^2(n)=J(J(n)),例如:J^2(10)=J(J(10))=J(5)=3,J^3(n)=J(J(J(n)))

那么问题来了,你能编写一个用于求出J^m(n)的C/C++程序吗?

输入格式:
总共有N组例子
每个例子输入n和m。(0<n,m<10^9)
结束输入的标志是m=n=0

输出格式:
每个例子输出J^m(n)

输入样例

10 2
10 1
20 1
0 0

输出样例

3
5
9

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

攀登最高峰 2022-09-08 06:59:11

不建议来这里问这样种问题 去讨论区问就好了

℡寂寞咖啡 2022-09-08 06:59:11

这种问题肯定会被喷,不过还是直接给你两段代码吧,毕竟大家都年轻过

1.数组实现
2.链表实现

很久之前的代码,应该是没有问题的

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文