1、給定一個最大值n(10>n>=0),求0-n之間的整數可以組成多少個奇數。
分析:
首先分析組成數位首位:不能為0,可放數字為n個然後分析末位:必須為奇數,可放數字為odd[1,n]個最後分析中間位:範圍內任一數字,可放數字為n+1個
def get_odd(n): first = n last = len([x for x in range(n+1) if x%2 !=0 ]) sum = last+first*last if n <2:return sum for i in range(2,n+1): middle = (n + 1) ** (i - 1) sum += first*middle*last return sum
10、海灘上有一堆桃子,五隻猴子來分。第一隻猴子把這堆桃子平均分為五份,多了一個,這隻猴子把多的一個吃掉,拿走了一份。第二隻猴子把剩下的桃子又平均分成五份,又多了一個,它同樣把多的一個吃掉,拿走了一份,第三、第四、第五隻猴子都是這樣做的,問海灘上原來最少有多少個桃子
def get_min_peaches(n): i = 1 plus = n*(n-1) def if_match(ret): for j in range(n): modn = (ret - 1) % n if modn != 0: return False ret = (ret-1)/n*(n-1) return True while True: if if_match(i): break i += plus return i
11、一隻青蛙一次可以跳上1級台階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的台階總共有多少種跳法。
def jump_step(n): result = lambda n: n if n < 2 else 2 * jump_step(n - 1) return result(n)
100、實現一個二叉樹
class Tree(): def __init__(self,ltree = 0,rtree = 0,data = 0): self.ltree = ltree self.rtree = rtree self.data = dataclass BTree(): def __init__(self,base = 0): self.base = base def _Empty(self): if self.base == 0: return True else: return False def qout(self,tree_base): if tree_base == 0: return print tree_base.data self.qout(tree_base.ltree) self.qout(tree_base.rtree) def mout(self,tree_base): if tree_base == 0: return self.mout(tree_base.ltree) print tree_base.data self.mout(tree_base.rtree) def hout(self,tree_base): if tree_base == 0: return self.hout(tree_base.ltree) self.hout(tree_base.rtree) print tree_base.data