当前位置: 首页 > 面试经验 >

深信服笔试算法题0914

优质
小牛编辑
91浏览
2023-03-28

深信服笔试算法题0914

1.矿泉水
import math
x,a,b=5000,5,100
per_a=a/500 # 求单价
per_b=b/1500 # 求单价
ans=0
if per_a<=per_b: # 小瓶单价便宜,全买小瓶
    ans=int(math.ceil(x/500)*a)
else: # 大瓶单价便宜
    ans=(x//1500)*b # 先买够整数瓶
    res=x%1500
    ans+=min(math.ceil(res/500)*a,b) # 比较剩余部分,大瓶和小瓶哪个更划算
print(ans)

2.立方和
# 打表,先把立方能表示的都算出来
# 数据范围1,000,000,000,所以到1000就可以
num=int(input())
a=set()
for i in range(1,1000):
    for j in range(i,1000):
        a.add(pow(i,3)+pow(j,3))
if num in a:
    print('Yes')
else:
    print('No')


3.求环的个数
def change(nums):
    n=len(nums)
    cycles=0
    total=set()
    for i in range(1,n+1):
        if i not in total:
            a=set()
            while(i not in a): # 判定环
                total.add(i)
                a.add(i)
                i=nums[i-1]
            cycles+=1
    return cycles
ans=change(nums)
if ans==1: # 说明只有一个环,不需要修改元素
    print(0)
else: # 多于一个环,有几个环就修改几个元素
    print(ans)

#深信服笔试题#
 类似资料: