检查两个数字是否可以成为sam的算法

2024-09-29 21:59:31 发布

您现在位置:Python中文网/ 问答频道 /正文

你好,我必须回答这个问题作为一项任务。我已经做了代码,但我没有得到满分,因为显然我错过了一些条件

给定两个整数AA和BB,通过应用下面所示的任意数量的运算来确定是否可以执行相同的操作:

  • 把数AA乘以2。

  • 把BB数乘以2。

如果为真,则打印“felizmil”,否则输出“tristemil”

代码

def ___gcd(a,b): 
    if (a == 0 or b == 0): 
        return 0
    if (a == b): 
        return a  
    if (a > b): 
        return ___gcd(a-b, b) 
    return ___gcd(a, b-a) 

def lcmOfArray(arr,n): 
    ans = arr[0] 
    for i in range(1,n): 
        ans = (arr[i]*ans)/___gcd(arr[i], ans) 
    return ans 
def checkArray(arr, num, n, m): 
    lcm = lcmOfArray(arr, n) 
    for i in range(n): 
        val = lcm/arr[i] 
        for j in range(m and val!=1): 
            while (val % num[j] == 0): 
                val = val/num[j] 
        if (val != 1): 
            return 0
    return 1
arr=list(map(int,raw_input().split()))
num = [2] 
n = len(arr) 
m = len(num) 
if 0 in arr:
    print("tristemil")
else:
    if(checkArray(arr, num, n, m)): 
        print("felizmil") 
    else: 
        print("tristemil") 

示例-->; 3.5输出:tristemil 14.7输出:felizmil

我不知道我遗漏了哪些病例/情况,我非常感谢你的帮助。非常感谢:D


Tags: 代码inforreturnifdefrangeval
2条回答

我的朋友A.Mercado用以下代码解决了这个问题:

a, b = raw_input().split()
a = int(a)
b = int(b)
if a == b:
    print("felizmil")
else:
    if a % 2 != 0 and b % 2 != 0:
        print("tristemil")
    elif a % 2 == 0 and b % 2 == 0:
        if a > b:
            if a % b == 0:
                print("felizmil")
            else:
                print("tristemil")
        else:
            if b % a == 0:
                print("felizmil")
            else:
                print("tristemil")
    else:
        if a > b:
            if (a*2) % b == 0:
                print("felizmil")
            else:
                print("tristemil")
        else:
            if (b*2) % a == 0:
                print("felizmil")
            else:
                print("tristemil")

我们可以做到:

def are_equal(a, b):
    if a > b:
        a, b = b, a

    if a == 0:
        return b == 0

    while a < b:
        a *= 2

    return a == b


if are_equal(2, 4):
    print('felizmil')
else:
    print('tristemil')


if are_equal(2, 3):
    print('felizmil')
else:
    print('tristemil')


assert are_equal(0, 0) == True
assert are_equal(0, 1) == False
assert are_equal(1, 0) == False
assert are_equal(1, 2) == True
assert are_equal(2, 1) == True
assert are_equal(2, 2) == True

相关问题 更多 >

    热门问题