鱼C论坛

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

关于魔数的代码

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

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

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

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


求大神帮忙!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-9-20 11:52:28 From FishC Mobile | 显示全部楼层
这是特定的6位数乘以特定的数
还是任意六位数都有这个特性
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

后者代码简单些,参考代码:
numStr = input(">>> ")

for i in range(2, 10):
    result = str(int(numStr) * i)
    for j in result:
        if j not in numStr:
            break
    else:
        print(f"{numStr} * {i}: {result}")

测试输出:
>>> 561307
561307 * 9: 5051763
>>> 167349
167349 * 4: 669396
167349 * 7: 1171443
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

就结果  是由我输入的六位数 组成即可
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

任意六位数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

输入六位数 里面任意数字 组成的结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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



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

想知道小甲鱼最近在做啥?请访问 -> 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之外的数字  就不是
想知道小甲鱼最近在做啥?请访问 -> 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 各数字至少一个

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

123456里面随便一个都行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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



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

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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


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

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

例:
输入561307
得出 9

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


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

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

print()
print('当s=',s,'敏合的有',ok)


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

当s= 561307 敏合的有 [9]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

我理解楼主的题目是



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

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

if __name__ == '__main__':
    for inum in range(100000, 1000000):
        for coefficient in range(2, 10):
            res = inum * coefficient
            if isRight(res, inum):
                print(f'{inum} * {coefficient} = {res}')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-10 17:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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