题目介绍

对一个十进制数的各位数字做一次平方和,称作一次迭代。如果一个十进制数能通过若干次迭代得到 1,就称该数为幸福数。1 是一个幸福数。此外,例如 19 经过 1 次迭代得到 82,2 次迭代后得到 68,3 次迭代后得到 100,最后得到 1。则 19 就是幸福数。显然,在一个幸福数迭代到 1 的过程中经过的数字都是幸福数,它们的幸福是依附于初始数字的。例如 82、68、100 的幸福是依附于 19 的。而一个特立独行的幸福数,是在一个有限的区间内不依附于任何其它数字的;其独立性就是依附于它的的幸福数的个数。如果这个数还是个素数,则其独立性加倍。例如 19 在区间[1, 100] 内就是一个特立独行的幸福数,其独立性为 2×4=8。

另一方面,如果一个大于1的数字经过数次迭代后进入了死循环,那这个数就不幸福。例如 29 迭代得到 85、89、145、42、20、4、16、37、58、89、…… 可见 89 到 58 形成了死循环,所以 29 就不幸福。

本题就要求你编写程序,列出给定区间内的所有特立独行的幸福数和它的独立性。

输入格式:

输入在第一行给出闭区间的两个端点:1<A<B≤104。

输出格式:

按递增顺序列出给定闭区间 [A,B] 内的所有特立独行的幸福数和它的独立性。每对数字占一行,数字间以 1 个空格分隔。

如果区间内没有幸福数,则在一行中输出 SAD

输入样例 1:

10 40

输出样例 1:

19 8
23 6
28 3
31 4
32 3

注意:样例中,10、13 也都是幸福数,但它们分别依附于其他数字(如 23、31 等等),所以不输出。其它数字虽然其实也依附于其它幸福数,但因为那些数字不在给定区间 [10, 40] 内,所以它们在给定区间内是特立独行的幸福数。

输入样例 2:

110 120

输出样例 2:

SAD

 大致思路:

1、遍历a到b范围内的每个数,如果这个数是幸福数(不是幸福数就continue),则把所有依赖于它的幸福数存起来;遍历完后,所有依赖的幸福数一起存在一个列表lis2里

2、再重新遍历a到b范围的每个数,如果是幸福数,并且不在lis2里,说明它是特立独行的幸福数

判断一个数是不是幸福数:对这个数每位数平方求和得temp,如果temp为1则返回True,不为1则继续对temp作平方求和运算,循环直至temp为1;过程中 用一个列表lis1把过程中变化的每个temp值存起来,如果循环过程中的temp在lis1里面已经有了,则说明进入了死循环,返回False

特立独行幸福数独立性:可以计数它经过了多少次运算直至1

 代码实现

# 判断是否为幸福数
def isHappy(n):lis = []  # 存储一次运算中的所有数,用来判断是否死循环num = n  # 新建num另外存储一次输入的n值flag = False  # 先初始为False,用于返回结果while 1:temp = 0  # 每一次运算temp都要清零,用来存储每一次运算结果即每个数中的各位数平方求和for i in str(num):  # 每个数中的各位数平方求和temp = temp + pow(int(i), 2)if temp == 1:flag = Truebreakelse:if temp not in lis:  # 存储每一次运算的数temp,用来判断是否进入死循环lis.append(temp)elif temp in lis:  #  如果temp在前面出现过了,则死循环,直接中止并返回Falseflag = Falsebreaknum = temp  # 如果没跳出,则把运算后的temp赋给num再继续上面的运算return flag# 判断n是否为素数,是的话返回True,不是则False
def isPrime(n):for i in range(2, int(n ** 0.5 + 1)):if n % i == 0:return Falsereturn True# 要求传入一个幸福数n,并返回一个 所有依赖于这个幸福数 的幸福数列表
def happy_list(n):lis = []temp = 0while temp != 1:   #已知传入的n是幸福数了,算到最后temp肯定会等于1temp = 0  # 每次运算temp要还原为 0,不然死循环for i in str(n):temp = temp + pow(int(i), 2)lis.append(temp)n = tempreturn lis# 要求传入一个特立独行的幸福数,用来计算其独立性并返回
def independence_count(n):independence_num = len(happy_list(n))  # 它的独立性就是依赖于它的幸福数个数if isPrime(n): # 如果这个特立独行数还是素数,则独立性翻倍independence_num = independence_num * 2return independence_numa, b = list(map(int, input().split()))  # 输入a和b范围
lis = []  # 用来存所有依赖幸福数
# 这一步循环,遍历每一个幸福数,调用函数happy_list求得依赖于它的幸福数列表,并将遍历求得的列表全部汇总到列表lis
for i in range(a, b + 1):if isHappy(i) == True:lis = lis + happy_list(i)# 打印输出
if len(lis)==0:  # 如果列表l为空,则没有依赖的幸福数,也就是没有幸福数,则打印”SAD“print("SAD")
else:          # 否则,正常输出for i in range(a, b + 1):if isHappy(i) and i not in lis:print('{} {}'.format(i,independence_count(i)))

 提交结果(最后一个测试点会运行超时,提交多几次就好)


如有不懂的地方,请留言






PTA习题【python】 7-5 特立独行的幸福相关推荐

  1. PTA习题-python 7-4 多个数的最小公倍数

    两个整数公有的倍数称为它们的公倍数,其中最小的一个正整数称为它们两个的最小公倍数.当然,n个数也可以有最小公倍数,例如:5,7,15的最小公倍数是105. 输入n个数,请计算它们的最小公倍数. 输入格 ...

  2. PTA习题-python 7-1 互质数

    Sg认识到互质数很有用.若两个正整数的最大公约数为1,则它们是互质数.要求编写函数判断两个整数是否互质数. 输入格式: 首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据.每组测试先输入1个 ...

  3. 【PTA-训练day17】L2-029 特立独行的幸福 + L1-071 前世档案

    L2-029 特立独行的幸福 - 递归/模拟 + 判断素数 PTA | 程序设计类实验辅助教学平台 思路: 第一层循环是边界循环  for(int i=l;i<=r;i++) 枚举每一个i 第二 ...

  4. L2-029 特立独行的幸福 (25 分)-PAT 团体程序设计天梯赛 GPLT

    对一个十进制数的各位数字做一次平方和,称作一次迭代.如果一个十进制数能通过若干次迭代得到 1,就称该数为幸福数.1 是一个幸福数.此外,例如 19 经过 1 次迭代得到 82,2 次迭代后得到 68, ...

  5. 【CCCC】L2-029 特立独行的幸福 (25分),模拟题,set用法

    problem L2-029 特立独行的幸福 (25分) 对一个十进制数的各位数字做一次平方和,称作一次迭代.如果一个十进制数能通过若干次迭代得到 1,就称该数为幸福数.1 是一个幸福数.此外,例如 ...

  6. [PTA]习题9-3 平面向量加法

    [PTA]习题9-3 平面向量加法 本题要求编写程序,计算两个二维平面向量的和向量. 输入格式: 输入在一行中按照"x₁ y₁ x₂ y₂"的格式给出两个二维平面向量v₁ = (x ...

  7. 7-3 特立独行的幸福

    z作业做不出,参考网上资料自己进行修改改编的 对一个十进制数的各位数字做一次平方和,称作一次迭代.如果一个十进制数能通过若干次迭代得到 1,就称该数为幸福数.1 是一个幸福数.此外,例如 19 经过 ...

  8. 【PTA|Python】浙大版《Python 程序设计》题目集:第六章

    前言 Hello!小伙伴! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出-   自我介绍 ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计 ...

  9. 【L2-029 特立独行的幸福】

    天梯赛L2-029 特立独行的幸福 题目详情: 输入样例 1: 10 40 输出样例 1: 19 8 23 6 28 3 31 4 32 3 思路: 这个题也是借鉴了网上大佬的写法 这个题是求特立独行 ...

最新文章

  1. 终于找全啦!一二线城市知名互联网公司名单!对着找就对了
  2. centos7下kubernetes(6。运行应用)
  3. 什么是泛型、为什么要使用以及泛型擦除
  4. 二模网络_初二 八下英语 教学课件、作业课件、教案等(网络资源)
  5. c#与java之比较(转自Jack.Wang's home)
  6. 点到线段的距离_直线垂直,垂线的性质,点到直线的距离
  7. 截短 UTF-8 字符串
  8. Gstreamer之audio转码(二十三)
  9. 前端框架Vue(3)——vue-cli 目录结构
  10. ArcGIS空间分析笔记(汤国安)
  11. Hikaricp连接池问题
  12. 阿里巴巴最新区块链专利申请文件解读
  13. 耗时86小时的「百变小樱」最强数据可视化作品!| 译文
  14. 金仓数据库KingbaseES客户端连接问题
  15. 申请免费域名 + SSL 证书的方法
  16. 怎么配置环境变量?(保姆级教程)
  17. Spring Security OAuth2:整合jwt
  18. 故事:坐在我隔壁的小王问我什么是HyperLogLog
  19. 华为天才少年稚晖君自制硬萌机器人,开源 5 天,GitHub 收获 2900 星!
  20. Maven仓库的使用

热门文章

  1. React中文文档之Composition vs Inheritance
  2. Django——关于related查找
  3. 「史诗级干货」新人up主B站运营炫酷玩法,轻松实现UP!UP!UP!
  4. noip2002 自由落体 (物理)
  5. latex写论文(TeXstudio工具)
  6. UC浏览器首页滑动动画实现
  7. 为什么需要制定计划?
  8. MyBatis 遇到 Error updating database.问题
  9. 网络工程师2017上半年软考上午试题
  10. Java开发个人总结