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