【趣题】【递归】NKOJ3825 约瑟夫游戏
2016-10-31 23:27
232 查看
NKOJ3825 约瑟夫游戏
时间限制 : - MS 空间限制 : 265536 KB
评测说明 : 2000ms
问题描述
Y JC 很喜欢玩游戏,今天他决定和朋友们玩约瑟夫游戏。 约瑟夫游戏的规则是这样的:n 个人围成一圈,从1 号开始依次报数,当报到m 时,报1、2、…、m-1 的 人出局,下一个人接着从1 开始报,保证(n−1)是(m−1)的倍数。最后剩的一个人获胜。 Y JC 很想赢得游戏,但他太笨了,他想让你帮他算出自己应该站在哪个位置上。
输入格式
第一行包含两个整数n 和m,表示人数与数出的人数
输出格式
输出一行,包含一个整数,表示站在几号位置上能获得胜利。
样例输入
10 10
样例输出
10
提示
对于30%的数据,2 ≤ n ≤ 1000。
对于70%的数据,2 ≤ n ≤ 1000000。
对于100%的数据,2 ≤ m ≤ n ≤ 2^63 −1
来源 八中
思路:
每次留下的人是m的倍数和最后模剩下的人,所以递归解决….(谁想得到呀(╯‵□′)╯︵┴─┴)
时间限制 : - MS 空间限制 : 265536 KB
评测说明 : 2000ms
问题描述
Y JC 很喜欢玩游戏,今天他决定和朋友们玩约瑟夫游戏。 约瑟夫游戏的规则是这样的:n 个人围成一圈,从1 号开始依次报数,当报到m 时,报1、2、…、m-1 的 人出局,下一个人接着从1 开始报,保证(n−1)是(m−1)的倍数。最后剩的一个人获胜。 Y JC 很想赢得游戏,但他太笨了,他想让你帮他算出自己应该站在哪个位置上。
输入格式
第一行包含两个整数n 和m,表示人数与数出的人数
输出格式
输出一行,包含一个整数,表示站在几号位置上能获得胜利。
样例输入
10 10
样例输出
10
提示
对于30%的数据,2 ≤ n ≤ 1000。
对于70%的数据,2 ≤ n ≤ 1000000。
对于100%的数据,2 ≤ m ≤ n ≤ 2^63 −1
来源 八中
思路:
每次留下的人是m的倍数和最后模剩下的人,所以递归解决….(谁想得到呀(╯‵□′)╯︵┴─┴)
#include<cstdio> #include<iostream> using namespace std; long long n,m; long long solve(long long le,long long tot)//返回上一次余数为le,该次总人数为tot时,留下的人按最初编号排的位置 { if(tot==m) return tot-le; long long t=solve(tot%m,tot%m+tot/m); return t*m-le;//先将上一轮模剩下的人出局,所以减le } int main() { cin>>n>>m; cout<<solve(0,n); }
相关文章推荐
- hdu 5643King's Game(约瑟夫游戏,递归)
- 【题&结论(递归标连通块)】【搜索(IDA*)】NKOJ 2440 数字消除游戏
- [BZOJbegin][NOIP十连测第七场]约瑟夫游戏(递推|数学相关|递归)
- 2013-11-07 实验之火柴游戏(递归思维逻辑,转化思维,查找最优解思维)
- Cpp环境【CQYZOJ3531】【CQNOI2016模拟赛(八中出题)】约瑟夫の秘制游戏
- (noip模拟 约瑟夫游戏)<神**乱搞题>
- SSL1585 取数游戏(递归)
- 算法设计与分析:第二章 递归 2.4报数退圈游戏
- 【Openjudge】排队游戏(递归)
- Py:递归求解汉诺塔,简单的几行编程可以搞定很高层的三柱汉诺塔游戏
- 递归与动态规划---龙与地下城游戏问题
- leetcode 488. Zuma Game 祖玛游戏 + 递归做法
- 【分治】计算概论(A) / 函数递归练习(1)多边形游戏
- hdu5693D++游戏 区间DP-暴力递归
- 一个递归实现的取数游戏
- 约瑟夫杀人游戏
- 孩子们的游戏(圆圈中最后剩下的数)&约瑟夫问题I
- 汉若塔游戏非递归解法(c#)
- 数独游戏求解(递归+回溯)
- 【例题】【递归/推】NKOJ 3527数的划分&3526 放苹果&3131自然数的拆分