《程序员的算法趣题》-(日)增井敏克 Python解题 -- (Q21)

《程序员的算法趣题》-(日)增井敏克 , 书中为69 道数学谜题编写了解题程序, 编程语言为:Ruby,JavaScript,C语言。有兴趣的同学,可以购书阅读~

在此更新个人编写的Python版,仅供学习使用。(运行环境:Python3.6)

Q21 异或运算三角形

     著名的“帕斯卡三角形”的计算法则是“某个数值是其左上角的数和右上角的数之和”。这里我们用异或运算代替单纯的和运算,从第一层开始计算,最终可以得到如图所示的三角形。
                                                 

问题
        自上而下计算时,第 2014 个 0 会出现在哪一层?
            ※ 第 1 个 0 在第 3 层,第 2、3、4 个 0 都在第 5 层。

from collections import Counter
zero_index = 0
layer_index = 1
layer_numbers = [1]
while zero_index < 2014:
    new_layer = [1]
    for i in range(len(layer_numbers)-1):
        new_layer.append(layer_numbers[i] ^ layer_numbers[i+1])
    new_layer.append(1)

    layer_numbers = new_layer
    zero_index += Counter(layer_numbers)[0]
    layer_index += 1

print("第2014个0会出现在第‘%s’层" % layer_index)

运行结果:

                 第2014个0会出现在第‘75’层

猜你喜欢

转载自blog.csdn.net/cloudly89/article/details/84949514