鱼C论坛

 找回密码
 立即注册
查看: 2148|回复: 5

[已解决]初学者第九讲课后习题思路求讲解

[复制链接]
发表于 2016-11-9 23:38:53 From FishC Mobile | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如题:

1. 编写一个程序,求 100~999 之间的所有水仙花数。

疑问:这道题答案用代入法看了几分钟看懂了,请问下编写代码的思路是什么样的,或者写程序的应该是怎么开始的?是不是程序都是反向思维来写的呢
最佳答案
2016-11-10 14:02:56
这个我的解法和答案不一样呢。
我的思路是:
1.依次获取 100~999 的三位数, 假设为n
2.
获取n的百位数 a
获取n的十位数 b
获取n的个位数 c
3.
如果 a**3 + b**3 + c**3 = n,则输出n

代码是:

for i in range(100,1000):
    a = i//100
    b = (i//10)%10
    c = i%10
    if i == a*a*a + b*b*b + c*c*c:
        print(i)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-11-9 23:39:29 From FishC Mobile | 显示全部楼层
for i in range(100, 1000):     sum = 0     temp = i     while temp:         sum = sum + (temp%10) ** 3         temp //= 10         # 注意这里要使用地板除哦~     if sum == i:         print(i)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-10 14:02:56 | 显示全部楼层    本楼为最佳答案   
这个我的解法和答案不一样呢。
我的思路是:
1.依次获取 100~999 的三位数, 假设为n
2.
获取n的百位数 a
获取n的十位数 b
获取n的个位数 c
3.
如果 a**3 + b**3 + c**3 = n,则输出n

代码是:

for i in range(100,1000):
    a = i//100
    b = (i//10)%10
    c = i%10
    if i == a*a*a + b*b*b + c*c*c:
        print(i)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-10 15:14:31 | 显示全部楼层
莉子 发表于 2016-11-10 14:02
这个我的解法和答案不一样呢。
我的思路是:
1.依次获取 100~999 的三位数, 假设为n

这种思路比较简洁,答案的代码看起来很费劲
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-10 21:33:44 From FishC Mobile | 显示全部楼层
莉子 发表于 2016-11-10 14:02
这个我的解法和答案不一样呢。
我的思路是:
1.依次获取 100~999 的三位数, 假设为n

这种思路比较好理解 谢谢你。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-11 09:23:17 | 显示全部楼层
给力!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-5 16:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表