一道算法题:12个黑球和1个白球围成一个圆
来源:互联网 发布:网络电影如何盈利 编辑:程序博客网 时间:2024/05/17 06:29
问题:
桌上有12个黑球和1个白球围成一个圆,按顺时针方向顺序数到13就拿走对应的一个球,
桌上有12个黑球和1个白球围成一个圆,按顺时针方向顺序数到13就拿走对应的一个球,
如果要求最后拿走的是白球,请问该从哪个球开始数数。
分析:
从最后一轮开始考虑,按轮次倒推。可以用递归法求解。
python代码:
N=13# 把球看做从左到右的一行print('White ball position from left:')def find_ball(n): if n == 1: return 1 ret = N % n + find_ball(n-1) if ret > n: ret %= n print('%2d round: %d'%(N - n + 1, ret)) return retfind_ball(N)
输出:
White ball position from left:
12 round: 2
11 round: 3
10 round: 4
9 round: 2
8 round: 3
7 round: 2
6 round: 7
5 round: 2
4 round: 5
3 round: 7
2 round: 8
1 round: 8
开始的时候,白球位于第8个,也就是前面有7个黑球。 0 0
- 一道算法题:12个黑球和1个白球围成一个圆
- 每日一道算法题:求一个矩阵中最大的二维矩阵(元素和最大)
- 用递归函数和栈操作逆序一个栈(每日一道算法题)
- 【每天一道算法题】国王和囚犯
- 每天一道算法题1(StrToInt)
- 每日一道算法题——1
- 每日一道算法题(1)
- 一道算法题
- 一道算法题
- 一道算法题
- 一道算法题
- 一道算法题:圆桌会议
- 一道算法题
- 一道算法题
- 一道算法题
- 一道算法题
- 一道算法题
- 一道google算法题
- 本地广播LocalBroadcastManager简单使用
- 朴素贝叶斯法
- GreenDAO之「01.初始GreenDAO」
- (纵横图问题)(n阶奇数幻方)
- C语言 · 阿尔法乘积
- 一道算法题:12个黑球和1个白球围成一个圆
- Android 微信支付,授权,分享回调区分记录
- anaconda3 安装opencv3.0.0
- Java基础知识归纳
- 继承
- 八款Android 开发者必备的小工具
- java注解
- iOS中OC给Category添加属性
- Windows下用HackRF和SDR#收听FM