PAT-B 1005. 继续(3n+1)猜想(python)

把输入中的每个数能"cover的数"分别存在对应的链表里;

然后开始枚举输入中的每个数,看它是否在某条链表中(是否被某个数cover);若找不到这样的链表,说明它不被cover, 即为关键数。


1. str的split方法

2. list的extend增加一个或多个元素

3. list的append增加一个元素

4. list.sort默认从小到大排序,list.sort(reverse = True)从大到小排序

5. list的in方法


if __name__ == "__main__" :
    k = input()
    tmp = raw_input().split(' ') # split, extend, append
    num = []
    
    for i in range(k) :
        num.append(int(tmp[i]))

    num.sort(reverse = True)
    num_list = []
    ans = []
    
    for i in num :
        tmp_list = []
        while i != 1 :
            if i % 2 == 0 :
                i = i / 2
            else :
                i = (i * 3 + 1) / 2
            tmp_list.append(i)
        num_list.append(tmp_list)

    for i in num :
        no_find = True
        for j in num_list :
            if i in j :
                no_find = False
                break
        if no_find == True :
            ans.append(i)

    for i in ans :
        print i,



你可能感兴趣的:(PAT-B 1005. 继续(3n+1)猜想(python))