鱼C论坛

 找回密码
 立即注册
查看: 2836|回复: 14

关于魔数的代码

[复制链接]
发表于 2022-9-20 11:33:09 | 显示全部楼层 |阅读模式

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

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

x
输入一个六位数,然后它乘以一个2-9的个位数 得出的结果是由本身六位数的数字组成  


求大神帮忙!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-9-20 11:52:28 From FishC Mobile | 显示全部楼层
这是特定的6位数乘以特定的数
还是任意六位数都有这个特性
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-20 12:10:28 | 显示全部楼层
题目有些潦草了,六位数是一定都要含有,还是只要结果都是六位数中的数字就行?

后者代码简单些,参考代码:

  1. numStr = input(">>> ")

  2. for i in range(2, 10):
  3.     result = str(int(numStr) * i)
  4.     for j in result:
  5.         if j not in numStr:
  6.             break
  7.     else:
  8.         print(f"{numStr} * {i}: {result}")
复制代码


测试输出:

  1. >>> 561307
  2. 561307 * 9: 5051763
复制代码

  1. >>> 167349
  2. 167349 * 4: 669396
  3. 167349 * 7: 1171443
复制代码

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

使用道具 举报

 楼主| 发表于 2022-9-20 14:26:22 | 显示全部楼层
Twilight6 发表于 2022-9-20 12:10
题目有些潦草了,六位数是一定都要含有,还是只要结果都是六位数中的数字就行?

后者代码简单些,参考代 ...

就结果  是由我输入的六位数 组成即可
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-20 14:27:00 | 显示全部楼层
wp231957 发表于 2022-9-20 11:52
这是特定的6位数乘以特定的数
还是任意六位数都有这个特性

任意六位数
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-20 14:32:49 | 显示全部楼层
DragonYu 发表于 2022-9-20 14:26
就结果  是由我输入的六位数 组成即可

输入六位数 里面任意数字 组成的结果
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-20 14:43:14 | 显示全部楼层
DragonYu 发表于 2022-9-20 14:26
就结果  是由我输入的六位数 组成即可



有点没理解,我上面代码算实现了吗?

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

使用道具 举报

 楼主| 发表于 2022-9-20 15:17:19 | 显示全部楼层
Twilight6 发表于 2022-9-20 14:43
有点没理解,我上面代码算实现了吗?

我给你举个例子把  比如我输入123456  分别乘了2-9后  就分别为[246912, 370368, 493824, 617280, 740736, 864192, 987648, 1111104]  这些结果 要由123456每个数字组成  如果结果出现123456之外的数字  就不是
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-20 16:46:53 | 显示全部楼层
DragonYu 发表于 2022-9-20 15:17
我给你举个例子把  比如我输入123456  分别乘了2-9后  就分别为[246912, 370368, 493824, 617280, 740736 ...


123456 倘若结果为 11111111 算不算?

还是前者含有的数字,得到的结果必须都含有 即 必须有 1~6 各数字至少一个

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

使用道具 举报

 楼主| 发表于 2022-9-20 17:27:54 | 显示全部楼层
Twilight6 发表于 2022-9-20 16:46
123456 倘若结果为 11111111 算不算?

还是前者含有的数字,得到的结果必须都含有 即 必须有 1~6  ...

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

使用道具 举报

 楼主| 发表于 2022-9-20 17:29:03 | 显示全部楼层

123456里面随便一个都行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-20 17:31:03 | 显示全部楼层
DragonYu 发表于 2022-9-20 17:29
123456里面随便一个都行



那3L的代码就已经实现了,有什么问题吗?

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

使用道具 举报

发表于 2022-9-20 23:20:33 | 显示全部楼层
本帖最后由 jcpython2 于 2022-9-20 23:26 编辑
Twilight6 发表于 2022-9-20 17:31
那3L的代码就已经实现了,有什么问题吗?


老哥能否帮我看看我的代码

我理解楼主的题目是
  1. 输入六位整数N
  2. 分别乘以2-9
  3. 那一个结果得出的数是由N里各种数字组成的

  4. 例:
  5. 输入561307
  6. 得出 9
复制代码


以下是我的菜鸟代码,请忽略我那些菜鸟备注,请告诉一下我,我的代码思路是否正确? 能怎么简化?



  1. #输入 s 六位数
  2. s = int(input())
  3. r = [2,9] #r=2-9
  4. total = 0 #敏合次数
  5. ok = [] #符合条件的列表

  6. #循环取出2-9代入i
  7. for i in range(2,10):#要验证2-9包含9则range需到10,10 不验证
  8. #待验证数n = s * i(如S *2)
  9.     total = 0
  10.     n = s * i
  11.     print('验证',i,',','i:',i,'* s:',s,'n=',n,)
  12. #循环y in n
  13.     for y in str(n):         #n为int不能迭代,需转为str
  14.         if y in str(s):      #y此时代表着待验证数n的数值,逐个抽取去和s碰撞
  15.             total += 1
  16.         else:
  17.             print('n:',n,'内的:',y,'不在',s,'跳出循环')
  18.             break             #只要有一个y不在s直接break,此break跳过14行循环回到第8行循环,但会继续执行第20行代码
  19.     if total == len(str(n)):
  20.         print(i,'符合加入列表')
  21.         ok.append(i)

  22. print()
  23. print('当s=',s,'敏合的有',ok)
复制代码



输出
  1. 561307
  2. 验证 2 , i: 2 * s: 561307 n= 1122614
  3. n: 1122614 内的: 2 不在 561307 跳出循环
  4. 验证 3 , i: 3 * s: 561307 n= 1683921
  5. n: 1683921 内的: 8 不在 561307 跳出循环
  6. 验证 4 , i: 4 * s: 561307 n= 2245228
  7. n: 2245228 内的: 2 不在 561307 跳出循环
  8. 验证 5 , i: 5 * s: 561307 n= 2806535
  9. n: 2806535 内的: 2 不在 561307 跳出循环
  10. 验证 6 , i: 6 * s: 561307 n= 3367842
  11. n: 3367842 内的: 8 不在 561307 跳出循环
  12. 验证 7 , i: 7 * s: 561307 n= 3929149
  13. n: 3929149 内的: 9 不在 561307 跳出循环
  14. 验证 8 , i: 8 * s: 561307 n= 4490456
  15. n: 4490456 内的: 4 不在 561307 跳出循环
  16. 验证 9 , i: 9 * s: 561307 n= 5051763
  17. 9 符合加入列表

  18. 当s= 561307 敏合的有 [9]
复制代码

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

使用道具 举报

发表于 2022-9-21 07:37:07 | 显示全部楼层
jcpython2 发表于 2022-9-20 23:20
老哥能否帮我看看我的代码

我理解楼主的题目是



没毛病,一个小优化就是 if total == len(str(n)): 可以改写成 else:

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

使用道具 举报

发表于 2022-9-21 09:53:55 | 显示全部楼层
  1. def isRight(res, inum):
  2.     if set(str(res)).issubset(set(str(inum))):
  3.         return True
  4.     return False

  5. if __name__ == '__main__':
  6.     for inum in range(100000, 1000000):
  7.         for coefficient in range(2, 10):
  8.             res = inum * coefficient
  9.             if isRight(res, inum):
  10.                 print(f'{inum} * {coefficient} = {res}')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-26 18:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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