Python 和 奥数 — 周期问题

今天为大家带来一道周期问题。引用自公众号 匠心数学之小升初

题目:我国农历用鼠、牛、虎、兔、龙、蛇、马、
     羊、猴、鸡、狗、猪这12种动物按顺序轮
     流代表每年。例如,第一年是鼠年,第二
     年就是牛年,第三年就是虎年。已知1986
     年是虎年,那么2019年是什么年?
     中小学学生可在家长的陪读下一起学习。

解题思路:

   第一步,找到题中的循环体,很明显就是12种动物。确定本题循环的长度是12。
   第二步,我们可以把“鼠、牛、虎、兔、龙、蛇、马、羊、猴、鸡、狗、猪”看做一个循环体。
   第三步,计算2019 年是什么年。一定要注意,我们找到的循环体第三个虎年对应的是1986 年,
                  第四个兔年对应的是1987 年,以此类推至 2019 年。

解答:

   从1986年到2019年经历了2019-1986=33(年)。33÷12=2……9

   从循环体中第四个兔年开始数 9 个属相,也就是循环体中的第十二个属相,很明显2019年就是猪年。
   答:2019年是猪年。

根据奥数解题思路,Python 编码如下:

# -*- coding:utf-8 -*-

years = ["鼠", "牛", "虎", "兔", "龙", "蛇", "马", 
         "羊", "猴", "鸡", "狗", "猪"]
year_1986 = "虎"
index_1986 = years.index(year_1986)
print("1986 年在列表中的下标是 %s !" % index_1986)
remainder = (2019-1986) % len(years)
print("(2019-1986)/12 的余数是 %s。" % remainder)
year_2019 = years[index_1986 + remainder]    
print("2019年是 %s 年" % year_2019)

运行结果如下:

1986 年在列表中的下标是 2 !
(2019-1986)/12 的余数是 9。
2019年是 猪 年

练习题

在一根绳子上依次串4颗红珠、2颗白珠、
1颗黑珠,并按此顺序依次重复。如果
从头开始一共串了75颗珠子,那么这 75
颗珠子中红珠比白珠多多少颗?

你可能感兴趣的:(Python 和 奥数 — 周期问题)