华为7.31笔试(第一题AC、第二题AC、第三题超纲)

这篇博客分享了华为笔试中的三道题目,包括如何让设备售卖的均价最接近特定值的问题,以及判断旋转字符串是否能相互包含的逻辑,最后是一道有向图消除环的题目。博主详细阐述了每道题目的思路和解题方法。
摘要由CSDN通过智能技术生成

第一题

题目:小明是个强迫症卖家,有10000台设备,卖的均价要求最接近D元,输出卖出的台数N,总售价M

输入 0<D<10,精确到小数点后12位   ;   输出 M N

思路:

均价与D相接近,初始化M,N为1。然后计算均价M/N。

如果均价 > 幸运数D,则台数(分母)增加。

如果均价 <= 幸运数D,则总售价(分子)增加。

直到 M N 超出循环,其中取台数最小的一个

#coding=utf-8
import sys
D = float(sys.stdin.readline().strip())

n, m = 1, 1
# 正负无穷  float("inf"), float("-inf")
diff = float('inf')
while m < 100000 and n <= 10000:
    if abs(m/n-D) < diff:
        tmp_m, tmp_n = m, n
        diff = abs(m/n-D)
    if m/n-D > 0:
        n += 1
    elif m/n-D <= 0:
        m += 1
print(tmp_m, tmp_n)

第二题

题目:输入三组旋转字符串,每组分别为源和目标,判断源在旋转一定次数后,是否可以包含目标。包含返回1,否则返回0

输入 'AABCD'  &#

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值