约瑟夫问题简单求解
2015-06-30 21:19
337 查看
约瑟夫问题是个有名的问题:N个人围成一圈,从第一个开始报数,第M个将退出,再从下一个从1开始报数,第M个退出,最后剩下一个,求最后一个人的编号。
i个人和
i-1个人同解,它们解的关系满足f[i]=(f[i-1]+m%i)%i,且f[1]=0,所以最后一个人的编号为f
+1
i个人和
i-1个人同解,它们解的关系满足f[i]=(f[i-1]+m%i)%i,且f[1]=0,所以最后一个人的编号为f
+1
#include<stdio.h> int main(){ int n,m; printf("请输入n和m:"); scanf("%d%d",&n,&m); int f=0; for(int i=2;i<=n;i++) f=(f+m%i)%i; printf("最后一个人的编号是%d",f+1); return 0; }
相关文章推荐
- 支持向量机(2)
- json转json树状结构
- 向脚本传递参数(一)
- ## 猜猜看 ##
- 升级_宽视野Oracle图形升级(升级后dbca建库)—10.2.0.1.0提拔10.2.0.5.0
- LeetCode Flatten Binary Tree to Linked List
- libjpeg学习1:简单使用示例
- 学习JAVA中(一) 一些简单的排序算法
- 小编初见客户
- httpclient 模拟浏览器动作需注意的cookie和HTTP头等信息
- 黑马day11 不可重复度&解决方案
- 设有两个集合A和集合B,要求设计生成集合C=A∩B的算法,其中集合A、B和C用链式存储结构表示
- 工行网银B2c第三方接口开发
- Tomcat注册成系统服务并修改内存
- BZOJ2456
- 分享动态拼接Expression表达式组件及原理
- [POJ 3061] Subsequence
- CocoaPods更新方法
- 同一个程序在命令行下,编译为什么报错???难道命令行下不能进行导入包的操作???
- c++中string类的详解