题目:
解析:
首先简单的情况是,两个数,判断能否通过题目中的规则,每次乘以2,最后能否相等,这个问题其实很简单,设两个数为a和b,则有:
a*2n=b*2m
化简后得到:
a/b=2m-n
求对数:
log2(a/b)=m-n
当条件成立时,n和m均为正数,也就是m-n也为整数。
当数组中有多于两个数时,要判断整个数组是否符合,只需要判断相邻两个数是否符合规则即可,也就是只需要遍历一次,从两个数迁移到多个数的情况是一样的。
代码:
1 import math 2 3 4 def log2(num): 5 return math.log(num, 2) 6 7 8 def isInt(n): 9 return n - int(n) == 0 10 11 12 while True: 13 try: 14 n = int(raw_input()) 15 ns = map(float, raw_input().split(' ')) 16 for i in range(n-1): 17 if not isInt(log2(ns[i] / ns[i+1])): 18 print 'NO' 19 break 20 else: 21 print 'YES' 22 except EOFError: 23 break