2020届华为和360优招技术岗软件笔试题

本文分享了2020年7月31日和8月7日华为以及8月15日360的技术岗位笔试题目,主要涵盖编程类问题,为应聘者提供参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

7月31号华为试题:

第一题:

# test = "0.50000000000000"
# wantedPrice = float(test)

import numpy as np

n = 10000
wantedPrice = float(input())
maxTotal = int(np.ceil(wantedPrice)) * n
#向上取整

M = int(wantedPrice) * 1
N = 1

for total in range(maxTotal + 1):
    floorN = int(np.floor(total / wantedPrice))#向下取整
    if floorN != 0 and np.abs(total / floorN -
                              wantedPrice) < np.abs(M / N - wantedPrice):
        M = total
        N = floorN
    ceilN = int(np.ceil(total / wantedPrice))
    if ceilN != 0 and np.abs(total / ceilN -
                             wantedPrice) < np.abs(M / N - wantedPrice):
        M = total
        N = ceilN

print(M, N)

第二题:

import java.util.Scanner;
public class huaweiStr {
	public static void main(String[] args){
		Scanner in = new Scanner(System.in);
        String out = "";
        int  num = 0;
		while(num!=3){
			String str = in.nextLine();
			String s = in.nextLine();
			if(str == null ||s == null)
				break;			
			String strnew = str+str;
			if(strnew.indexOf(s)!=-1)
				out = out+1;
			else
				out = out+0;
			num++;
		}
		System.out.println(out);
	}
}

8月7号华为试题:

第二题:

from functools import reduce

WORDS = []
LASTREPEAT = []


def generateWords(leafPounds, nonLeafLabels, nonLeafPounds):
    if not nonLeafLabels:
        return
    global WORDS, LASTREPEAT
    parentsNum = leafPounds.count("1")
    repeat = []
    start = 0
    end = -1
    for i, ele in enumerate(leafPounds[1:]):
        if ele == "1":
            end = i + 1
            repeat.append(sum(LASTREPEAT[start:end]))
            start = end
    repeat.append(sum(LASTREPEAT[start:]))

    characters = []
    for i in range(parentsNum):
        characters.extend([nonLeafLabels[i]] * repeat[i])

    for i in range(len(WORDS)):
        WORDS[i] += characters[i]
    LASTREPEAT = repeat
    generateWords(nonLeafPounds[:parentsNum], nonLeafLabels[parentsNum:],
                  nonLeafPounds[parentsNum:])


if __name__ == "__main__":
    M = int(input())
    labels = input().split(" ")
    hasChild = input().split(" ")
    pounds = input().split(" ")
    N = int(input())
    values = input().split(" ")
    P = int(input())
    key = input().split(" ")

    leafLabels = []
    leafPounds = []
    nonLeafLabels = []
    nonLeafPounds = []
    for i in range(M):
        if hasChild[i] == "0":
            leafLabels.append(labels[i])
            leafPounds.append(pounds[i])
        else:
            nonLeafLabels.append(labels[i])
            nonLeafPounds.append(pounds[i])

    WORDS = leafLabels.copy()
    LASTREPEAT = [1] * len(WORDS)
    generateWords(leafPounds, nonLeafLabels, nonLeafPounds)

    searchWord = reduce(lambda a, b: a + b, key[::-1])
    if searchWord in WORDS:
        print(values[WORDS.index(searchWord)])
    else:
        print(0)

# 15
# 115 112 116 97 111 121 114 101 105 112 121 114 102 115 116
# 0 0 0 1 1 0 1 0 0 0 0 1 1 1 1
# 1 1 0 1 0 1 1 1 0 0 0 1 1 0 0
# 8
# 1 2 3 4 5 6 7 8
# 3
# 116 114 112

# 15
# s p t a o y r e i p y r f s t
# 0 0 0 1 1 0 1 0 0 0 0 1 1 1 1
# 1 1 0 1 0 1 1 1 0 0 0 1 1 0 0
# 8
# 1 2 3 4 5 6 7 8
# 3
# t r p

8月15号360编程第一题:

N, M = list(map(int, input().split(" ")))
A = []
for i in range(N):
    line = list(map(int, input().split(" ")))
    A.append(line)

result = 0
while True:

    area = [[0 for _ in range(M)] for _ in range(N)]

    for i in range(N):
        for j in range(M):
            if A[i][j] >= 1:
                area[i][j] = 6
                try:
                    if A[i + 1][j] >= 1:
                        area[i][j] -= 2
                except:
                    pass
                try:
                    if A[i][j + 1] >= 1:
                        area[i][j] -= 2
                except:
                    pass
                try:
                    if A[i][j] >= 2:
                        area[i][j] -= 2
                except:
                    pass
    allZero = True
    for i in range(N):
        for j in range(M):
            result += area[i][j]
            if A[i][j] >= 1:
                allZero = False
                A[i][j] -= 1

    if allZero:
        break
print(result)

# 2 2
# 2 1
# 1 1

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值