当前位置: 移动技术网 > IT编程>脚本编程>Python > 测试开发阿里巴巴笔试题2020

测试开发阿里巴巴笔试题2020

2020年07月22日  | 移动技术网IT编程  | 我要评论

给定目标数公约数,找到三个数相加等于目标数(自己写的,没有上传测试代码)

问题描述:

给定目标数n公约数k,找到三个数相加等于目标数,如果有多种情况只需输出其中一种,如果找不到这样的三个数就输出-1
如输入 n:6,k:1 则输出1,2,3(1,2,3的公约数为1)
输入 n:12,k:4 则输出-1
输入n:38,k:2 则输出2,4,32(2,4,32的公约数为2)

def fun(n,k):
    que = []
    for i in range(1,n):
        if i*k<n:
            que.append(i*k)
    size = len(que)
    if size<3:
        return -1
    for i in range(size-2):
        for j in range(i+1,size-1):
            if que[i]+que[j]>=n:
                return -1
            for g in range(j+1,size):
                if que[i]+que[j]+que[g]==n:
                    return que[i],que[j],que[g]
                if que[i]+que[j]+que[g]>n:
                    break
result = fun(38,2)
print(result)

幸运数7(自己写的,没有上传测试代码)

问题描述:

输入范围[r,l],输出该范围内幸运数的个数
幸运数解释:
数657,相邻位相减绝对值组成12,12相邻位相减绝对值组成1,不为7 故657不是幸运数
数18 相邻位相减绝对值组成7,故18为幸运数

def fun(l, r):
    que = []
    sum = 0
    for num in range(l,r+1):
        while num:
            que.append(num%10)
            num = num//10
        while len(que) >= 2:
            size = len(que)
            for j in range(size - 1):
                que.append(abs(que[j + 1] - que[j]))
                que.pop(0)python
                if j+1 == size-1:
                    que.pop(0)

        if que.pop(0) == 7:
            sum += 1
    return sum

result = fun(l=1,r=10000)
print(result)

#注释
123%10 = 12.3
123/10=3
123//10=12
for i in range(2,5)
    print(i)
>> 2,3,4

本文地址:https://blog.csdn.net/qq_37261711/article/details/107474487

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网