鱼C论坛

 找回密码
 立即注册
查看: 2440|回复: 11

[已解决]关于18讲的水仙花数

[复制链接]
发表于 2021-5-30 16:18:13 | 显示全部楼层 |阅读模式

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

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

x
自己写的代码,跑不出来,不知道哪里出了问题,和参考答案的思路看起来也差了很多。。
求大神解答
  1. for i in range(100,1000):
  2.     a = i//100
  3.     b = (i//10)-a
  4.     c = i-a-b
  5.     if i == a**3 + b**3 + c**3:
  6.         print(i)
复制代码
最佳答案
2021-5-30 16:28:15
本帖最后由 柿子饼同学 于 2021-5-30 16:29 编辑
  1. >>> i = 153
  2. >>> a = i // 100
  3. >>> a
  4. 1
  5. >>> b = i // 10 - a
  6. >>> b
  7. 14
  8. >>> c = i - a - b
  9. >>> c
  10. 138
  11. >>>
复制代码

你看看,假设i = 153,那i // 10 是15,不是5
自己写了一个帖子,可以看看
浅谈水仙花数题目
https://fishc.com.cn/thread-192863-1-1.html
(出处: 鱼C论坛)
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-5-30 16:27:55 | 显示全部楼层
c = i-a*100-b*10
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-5-30 16:28:15 | 显示全部楼层    本楼为最佳答案   
本帖最后由 柿子饼同学 于 2021-5-30 16:29 编辑
  1. >>> i = 153
  2. >>> a = i // 100
  3. >>> a
  4. 1
  5. >>> b = i // 10 - a
  6. >>> b
  7. 14
  8. >>> c = i - a - b
  9. >>> c
  10. 138
  11. >>>
复制代码

你看看,假设i = 153,那i // 10 是15,不是5
自己写了一个帖子,可以看看
浅谈水仙花数题目
https://fishc.com.cn/thread-192863-1-1.html
(出处: 鱼C论坛)

评分

参与人数 1鱼币 +3 收起 理由
wmy1212 + 3 感谢楼主无私奉献!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-5-30 16:32:24 | 显示全部楼层
[b]

你的 a // 100 获得的是 百位数的值

而你 b、c 获取的值都是不正确的,我帮你改了下,看代码注释吧

参考代码:

  1. for i in range(100,1000):
  2.     a = i//100
  3.     b = (i//10)%10   
  4.     # 先 // 10 ,去掉个位数,再求余,即得到十位数
  5.     c = i%10   
  6.     # 对 i 直接 %10 求余 即得到个位数值
  7.     if i == a**3 + b**3 + c**3:
  8.         print(i)
复制代码


还有个更简单的方法,如果你不想用数学计算出各个位置上的数,可以将 i 先转为 字符串,利用字符串切片来进行判断即可:

参考代码:

  1. for i in range(100,1000):
  2.     a,b,c = str(i)
  3.     if i == int(a)**3 + int(b)**3 + int(c)**3:
  4.         print(i)
复制代码


[/b]

评分

参与人数 1鱼币 +3 收起 理由
wmy1212 + 3 感谢楼主无私奉献!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-5-30 16:32:27 | 显示全部楼层
  1. for i in range(100,1000):
  2.     a = i//100
  3.     b = (i//10)-a*10
  4.     c = i-a*100-b*10
  5.     if i == a**3 + b**3 + c**3:
  6.         print(i)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2021-5-30 16:32:42 | 显示全部楼层

啊啊啊,我傻了!蟹蟹!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-30 16:34:23 | 显示全部楼层
柿子饼同学 发表于 2021-5-30 16:28
你看看,假设i = 153,那i // 10 是15,不是5
自己写了一个帖子,可以看看
浅谈水仙 ...

恍然大悟知道自己的致命错误了。。蟹蟹,我看看文章~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-30 16:37:13 | 显示全部楼层
谢谢大家!我太蠢了!都让我get到自己的错了,可惜只能有一个最佳【就给了第一位同学啦】
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-30 16:39:01 | 显示全部楼层
wmy1212 发表于 2021-5-30 16:37
谢谢大家!我太蠢了!都让我get到自己的错了,可惜只能有一个最佳【就给了第一位同学啦】




第一位同学不是答案,最佳我改给二楼了

不能乱给哈,不然可能会误导别的鱼油

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2021-5-30 16:43:59 | 显示全部楼层
Twilight6 发表于 2021-5-30 16:39
第一位同学不是答案,最佳我改给二楼了

不能乱给哈,不然可能会误导别的鱼油

好的哇,知道了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-30 16:47:02 | 显示全部楼层
  1. for i in range(100,1000):
  2.     a = i//100
  3.     b = (i-a*100)//10
  4.     c = i-a*100-b*10
  5.     if i == a**3 + b**3 + c**3:
  6.         print(i)
复制代码

最后修改之后是这样,结果是对的了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-30 17:38:09 | 显示全部楼层
wmy1212 发表于 2021-5-30 16:43
好的哇,知道了

给渔币,太客气了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-23 05:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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