일단 문제를 보니 그냥 카운트를 하면 될 것 같아서 바로 코딩. 3번째 값도 그냥 별다른 어려움없이 바로 코드.
~cpp
def countCode(n):
count = 1
while n != 1:
if n % 2 == 1: n=n*3 + 1
else: n = n/2
count += 1
return count
def cycleLengthMax(i,j):
return max([countCode(each) for each in range(i,j+1)])
def cycleLengthMax2(i,j):
print [(each,countCode(each)) for each in range(i,j+1)]
def cycleLengths(i,j):
result = [countCode(each) for each in range(i,j+1)]
result.sort()
return result
def main():
print countCode(22)
print cycleLengthMax(1,10)
print cycleLengthMax(100,200)
print cycleLengthMax(201,210)
print cycleLengthMax(900,1000)
print cycleLengthMax(1,1000000)
def main2():
print countCode(22)
print cycleLengths(1,10)[-3]
print cycleLengths(100,200)[-3]
def main3():
for i in range(1,30):
cycleLengthMax2(1,i)
if __name__=="__main__":
import psyco
psyco.full()
#main()
#main2()
main3()