NOJ 1033 约瑟夫问题
来源:互联网 发布:qq游戏 for mac 编辑:程序博客网 时间:2024/06/06 09:23
2016.10.14
【题目描述】
1033.约瑟夫问题(Joseph)
时限:100ms 内存限制:10000K 总时限:1000ms
描述
设有N名同学手拉手围成一圈,自1、2、3、……开始编号,现从1号开始连续数数,每数到M将此同学从圈中拉走, 求最后被拉走的同学的编号
输入
两个正整数M和N
输出
一个正整数,为最后被拉走的同学的编号,最后输出回车
输入样例
5 3
输出样例
4
【解题思路】
这就是传说中的约瑟夫环问题。
从1开始报数,报到m的人会出列,这时第m+1个人编号为1,剩下的n-1个人又组成了一个新的约瑟夫环。如果我们知道了子问题的解,那么就能知道原问题的解。易知剩下最后一个人的编号为1,可以向前推出原问题的解。
考虑原数列: 1,2,…,n
第m-1个人出列:1,2,…,k-1,k+1,…,n (k = m % n)
改变顺序: k+1,k+2,…,n-1
重新编号: 1,2,…., n-1
这样设子问题的解为x’, 易知x’ = x + k = x + m % n = (x + m) % n;
【代码实现】
#include <iostream>using namespace std;int main(){ int n, m; int f; cin >> n >> m; f = 1; for (int i = 1; i <= n; i++) f = (f + m) % i; cout << f + 1 << endl;}
【心得体会】
数学很重要
0 0
- NOJ 1033 约瑟夫问题
- NOJ 1033 约瑟夫问题
- NOJ 1069 生日聚会 约瑟夫环
- noj 布线问题
- NOJ [1002] 将军问题
- NOJ 1002 将军问题
- 南邮NOJ开灯问题
- 众数问题 NOJ 1207
- NOJ 1002 将军问题
- NOJ 1133 百钱百鸡问题
- 约瑟夫问题、约瑟夫环
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- C语言笔试题总结3
- 二叉搜索树基本功能实现
- cf调优完整版本
- 第一天开通博客,记录自己的成长生涯
- java毕设--基于jsp servlet开发的在线商城系统
- NOJ 1033 约瑟夫问题
- Autoconfig/Automake工具使用实例
- 编写一个程序,输出以下图案
- spark+hadoop (yarn模式)
- 配置策略 一 系统环境变量自动配置脚本
- 侧滑菜单(Fragment)
- mysql的左连接、右连接和内连接
- C语言笔试题总结
- leetcode 198: House Robber