首页 > 试题广场 >

平衡数

[编程题]平衡数
  • 热度指数:2413 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
牛牛在研究他自己独创的平衡数,平衡数的定义是:将一个数分成左右两部分,分别成为两个新的数。
左右部分必须满足以下两点:
1,左边和右边至少存在一位。
2,左边的数每一位相乘如果等于右边的数每一位相乘,则这个数称为平衡数。
例如:1221这个数,分成12和21的话,1*2=2*1,则称1221为平衡数,再例如:1236这个数,可以分成123和1*2*3=6,所以1236也是平衡数。而1234无论怎样分也不满足平衡数。

输入描述:
输入一个正整数(int范围内)。


输出描述:
如果该数是平衡数,输出 "YES", 否则输出 "NO"。
示例1

输入

1221
1234

输出

YES
NO
def fn(str):
    s=1
    for i in range(len(str)):
        s=s*str[i]
    return  s
def solution (sta):
    k =0
    for j in range(len(sta)-1):
        if fn(sta[:j+1])==fn(sta[j+1:]):
            k+=1
    if k==0:
        return "NO"
    else:
        return "YES"
a=input()
str1=[]
for i in range (len(a)):
    str1.append(int(a[i]))
print(solution(str1))
发表于 2022-08-29 22:27:21 回复(0)
#python3
from functools import reduce
str=input()
nums=list(map(int,str))
result='NO'
for i in range(1,len(nums)):
    rl=nums[0:i]
    ll=nums[i:]
    r=reduce(lambda x, y:x*y,rl)
    l=reduce(lambda x, y:x*y,ll)
    if r==l:
        result='YES'
        break
print(result)
编辑于 2022-08-29 16:38:40 回复(0)

热门推荐

通过挑战的用户

平衡数