博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
约瑟夫环问题
阅读量:2143 次
发布时间:2019-04-30

本文共 505 字,大约阅读时间需要 1 分钟。

约瑟夫环运作如下:

①n个人围在一起坐成环状

②从编号1开始报数

③数到某个数m的时候,此人出列,下一个人重新报数

④一直循环,直到留下最后一个人k,约瑟夫环结束

例如:8个人围成一圈,从序号为1的人开始报数,报到3的出列,,下个人重新报数,求最后剩下的人编号

最初状态:

  1  2 #3  4  5  6 *7  8

           ↓

  6  7       1  2 #3 *4  5     -----     问题被简化为7个人围成一圈,但同样报到3的人出列

                        ↓

#3  4       5  6      *1  2     -----     问题继续被简化为6个人围成一圈(原题可缩小规模)

……                                                     ↓

显然当n = n-1时,通过公式k = (k+m)%n把k变回刚好就是n个人情况的解

(但这时k可能为0,所以要假设这些人序号从0开始,最后答案加1)

                                                             ↓

                             一直递推,直到n = 2(k通过公式逆向推回)

#include
int main(void){ int n, m, i, k; scanf("%d%d", &n, &m); k = 0; for(i=2;i<=n;i++) k = (k+m)%i; k += 1; printf("%d\n", k); return 0;}

转载地址:http://simgf.baihongyu.com/

你可能感兴趣的文章
【雅思】雅思写作作业(1)
查看>>
【雅思】【大作文】【审题作业】关于同不同意的审题作业(重点)
查看>>
【Loadrunner】通过loadrunner录制时候有事件但是白页无法出来登录页怎么办?
查看>>
【English】【托业】【四六级】写译高频词汇
查看>>
【托业】【新东方全真模拟】01~02-----P5~6
查看>>
【托业】【新东方全真模拟】03~04-----P5~6
查看>>
【托业】【新东方托业全真模拟】TEST05~06-----P5~6
查看>>
【托业】【新东方托业全真模拟】TEST09~10-----P5~6
查看>>
【托业】【新东方托业全真模拟】TEST07~08-----P5~6
查看>>
solver及其配置
查看>>
JAVA多线程之volatile 与 synchronized 的比较
查看>>
Java集合框架知识梳理
查看>>
笔试题(一)—— java基础
查看>>
Redis学习笔记(三)—— 使用redis客户端连接windows和linux下的redis并解决无法连接redis的问题
查看>>
Intellij IDEA使用(一)—— 安装Intellij IDEA(ideaIU-2017.2.3)并完成Intellij IDEA的简单配置
查看>>
Intellij IDEA使用(二)—— 在Intellij IDEA中配置JDK(SDK)
查看>>
Intellij IDEA使用(三)——在Intellij IDEA中配置Tomcat服务器
查看>>
Intellij IDEA使用(四)—— 使用Intellij IDEA创建静态的web(HTML)项目
查看>>
Intellij IDEA使用(五)—— Intellij IDEA在使用中的一些其他常用功能或常用配置收集
查看>>
Intellij IDEA使用(六)—— 使用Intellij IDEA创建Java项目并配置jar包
查看>>