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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_18310041/article/details/97979649

第一题

题目:小明是个强迫症卖家,有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'  'CDAA' \ 'AABCD' 'ABCD' \ 'AABCD'  'CFS' ;   输出 110

思路:将源字符串与自身拼接,这样就可以得到所有的旋转字符串。然后判断目标是否在源的旋转钟

#coding=utf-8

import sys
if __name__ == "__main__":
    ans = ''
    for i in range(3):
        a = sys.stdin.readline().strip()
        b = sys.stdin.readline().strip()
        # 自身合并
        c = a+a  
        if len(b) > len(a):
            ans = ans + '0'
        else:
            # 直接查询是否在当前旋转
            if b in c:
                ans = ans + '1'
            else:
                ans = ans + '0'
    print(ans)

第三题

题目:消除有向图的环,返回最小长度的边

思路:直接返回'#',找不到边。AC达到10%

猜你喜欢

转载自blog.csdn.net/qq_18310041/article/details/97979649