PAT 乙级 1005 继续(3n+1)猜想 python
2017-09-29 16:58
183 查看
#思路 将每个输入值的卡拉兹值 作为一个字符串,然后字符串之间进行对比,得出需要的结果 num = int(input()) input_n =(input().split()) #按空格拆分输入内容 list_n = [] n_change = [] all_nchange = [] for i in range(num): list_n.append(int(input_n[i])) #将拆分后的字符串 转化为int类 放入该表 for i in range(num): n_str = str(list_n[i]) n = list_n[i] while n != 1: if n % 2 == 0: n =(n // 2) #2个数相除总是浮点型,即便2个都是int类型。若想整除,则使用 // 运算符 else: n =(3 * n + 1)//2 n_str+=str(n) #每个值 所得到的全部卡拉兹值n 合为一个字符串 all_nchange.append(n_str) #将每个值的字符串 放入该表 put_list = [] for i in range(num): for x in all_nchange: if (all_nchange[i] in x) and (not all_nchange[i] == x ): #对比字符串(前者在后者中包含,且两者不等) result = False break else: result = True if result == True: put_list.append(list_n[i]) #将符合的值放入该表 put_list.sort(reverse=True) put = '' for j in put_list: put +=' '+str(j) #将上述表内容转化为字符串(每个值中间加空格) print(put.strip()) #输出字符串(去除首位空格)参照博主zjw_python的代码 在其基础上做了些自己容易理解的更改
博主链接http://blog.csdn.net/zjw_python/article/details/62434123
相关文章推荐
- PAT乙级 1005. 继续(3n+1)猜想 (25)
- (PAT乙级)继续(3n+1)猜想(Python)
- PAT乙级1005. 继续(3n+1)猜想
- PAT乙级1005. 继续(3n+1)猜想 (25)
- [PAT-乙级]1005.继续(3n+1)猜想
- 1005. 继续(3n+1)猜想 (25)--PAT乙级
- 【PAT】(乙级)1005. 继续(3n+1)猜想 (25)
- PAT乙级 1005. 继续(3n+1)猜想 (25)
- 乙级 PAT 1005. 继续(3n+1)猜想 (25)
- PAT-乙级-1005. 继续(3n+1)猜想 (25)
- PAT(乙级)1005. 继续(3n+1)猜想
- PAT乙级 1005题.继续(3n+1)猜想
- PAT乙级—1005. 继续(3n+1)猜想 (25)-native
- PAT乙级 1005. 继续(3n+1)猜想 (25)
- PAT乙级-1005. 继续(3n+1)猜想
- 1005. 继续(3n+1)猜想 (25)-PAT乙级
- PAT 乙级 -- 1005 -- 继续(3n+1)猜想
- PAT-乙级-1005. 继续(3n+1)猜想 (25)
- [PAT乙级]1005. 继续(3n+1)猜想 (25)
- pat 乙级 1005 继续(3n+1)猜想 (25)