Python每日一练——第14天:蓝桥真题判断美国数学家维纳年龄


文章目录

  • 1. 算法描述
  • 2. 算法分析
  • 2. 代码实现
    • 方法1
    • 方法2
  • 《100天精通Python》专栏推荐白嫖80g Python全栈视频


1. 算法描述

  • 美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。一次,他参加某个重要会议,年轻的脸孔引人注目。于是有人询问他的年龄,他回答说:“我年龄的立方是个4位数。我年龄的4次方是个6位数。这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。”请你推算一下,他当时到底有多年轻。

2. 算法分析

  • 首先根据题意可以大胆的把年龄进行划定范围10到30岁之间其次根据年龄的立方是个4位数,年龄的4次方是个6位数找到所有的可能
  • 最后根据10个数字正好包含了从0到9这10个数字,每个都恰好出现1次这个条件筛选出最终答案。

2. 代码实现

方法1

实现代码📝:

for age in range(11, 23):age_3 = age ** 3  # 年龄的立方age_4 = age ** 4  # 年龄的4次方num_1 = age_3 // 1000  # 4位数的千位数字num_2 = age_3 % 1000 // 100  # 4位数的百位数字num_3 = age_3 % 100 // 10  # 4位数的十位数字num_4 = age_3 % 10  # 4位数的个位数字num_5 = age_4 // 100000  # 6位数的十万位数num_6 = age_4 % 100000 // 10000  # 6位数的万位数num_7 = age_4 % 10000 // 1000  # 6位数的千位数num_8 = age_4 % 1000 // 100  # 6位数的百位数num_9 = age_4 % 100 // 10  # 6位数的十位数num_0 = age_4 % 10  # 6位数的个位数if (num_1 != num_2 != num_3 != num_4 != num_5 != num_6 != num_7 != num_8 != num_9 != num_0) and (age_4 > 100000):print(age)break

运行结果👇:

在这里插入图片描述

在if判断的时候我加上了 age_4 > 100000这里是因为年龄的四次方要为六位数,这一步要记住,我开始就没有写这个条件得到得到的年龄为12。

方法2

利用字符串长度来判断

实现代码📝:

for age in range(11, 23):age_3 = str(age ** 3)  # 年龄的立方age_4 = str(age ** 4)  # 年龄的4次方# 判断长度if len(age_3) == 4 and len(age_4) == 6:# 进行去重操作if len(set(age_3 + age_4)) == 10:print(age)

运行结果👇:
在这里插入图片描述


《100天精通Python》专栏推荐白嫖80g Python全栈视频

《100天精通Python从入门到就业》:本专栏专门针对零基础和需要进阶提升的同学所准备的一套完整教学,从0到100的不断进阶深入,后续还有实战项目,轻松应对面试,专栏订阅地址:https://blog.csdn.net/yuan2019035055/category_11466020.html

  • 优点订阅限时9.9付费专栏进入千人全栈VIP答疑群,作者优先解答机会(代码指导、远程服务),群里大佬众多可以抱团取暖(大厂内推机会)!
  • 专栏福利简历指导、招聘内推、每周送实体书、80G全栈学习视频、300本IT电子书:Python、Java、前端、大数据、数据库、算法、爬虫、数据分析、机器学习、面试题库等等
    在这里插入图片描述
    在这里插入图片描述


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部