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,



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值