首页 > 试题广场 >

变种水仙花

[编程题]变种水仙花
  • 热度指数:73640 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解

变种水仙花数 - Lily Number:把任意的数字,从中间拆分成两个数字,比如1461 可以拆分成(1和461),(14和61),(146和1),如果所有拆分后的乘积之和等于自身,则是一个Lily Number。

例如:

655 = 6 * 55 + 65 * 5

1461 = 1*461 + 14*61 + 146*1

求出 5位数中的所有 Lily Number。


输入描述:


输出描述:
一行,5位数中的所有 Lily Number,每两个数之间间隔一个空格。
def is_lily_number(number):
    bool_number = 0
    self_number_str = str(number)
    for i in range(1, len(str(number))):
        bool_number = bool_number + int(self_number_str[:i]) * int(self_number_str[i:])
    if bool_number == number:
        return True
    return False
all_lily_number_5 = []
for i in range(10000, 100000):
    if is_lily_number(i):
        all_lily_number_5.append(i)
print(" ".join(map(str, all_lily_number_5)))

发表于 2026-03-29 19:02:26 回复(0)
def funct(l,r):
    for i in range(l, r):
        sums = 0
        for j in range(1,len(str(i))):
            a,b = str(i)[:j],str(i)[j:]
            sums += int(a)*int(b)
        if i == sums:
            flage = False
            print(i, end=" ")
if __name__ == "__main__":
    l, r = 10000,100000
    funct(l,r)

发表于 2024-09-28 17:21:20 回复(0)
输入数据转换为str,切分
for i in range(10000,100000):
    a = 0
    for j in range(1,5):
        a += int(str(i)[:j]) * int(str(i)[j:])
    if i==a:
        print(i,end=' ')


编辑于 2024-02-05 10:02:50 回复(0)
num=[]
for i in range(10000,99999):
    sum=0
    for j in range(1,5):
        sum+=(i%(10**j))*(i//(10**j))
    if sum==i:
        print("%d "%i,end="")
每次遇到这种题都算不清楚,这次可算自己做出来了
发表于 2021-12-02 21:44:18 回复(0)

问题信息

上传者:牛客309119号
难度:
5条回答 5399浏览

热门推荐

通过挑战的用户

查看代码
变种水仙花