【20190920】【校招笔试题】腾讯技术研究类和数据分析第三次笔试(2019.9.20)(待续)

问题一

【20190920】【校招笔试题】腾讯技术研究类和数据分析第三次笔试(2019.9.20)(待续)_第1张图片【20190920】【校招笔试题】腾讯技术研究类和数据分析第三次笔试(2019.9.20)(待续)_第2张图片

思路及代码

# 第一次写的只过了50%,想到哪里有问题了,最后没改完。
n, m = list(map(int, input().split()))
nums1 = list(map(int, input().split()))
nums2 = list(map(int, input().split()))
nums1.sort()
nums2.sort()
if nums1[-1] < 0:
    if num2[-1] <= 0:
        print(num1[0]*nums2[0])
    if nums2[-1] > 0:
        if nums2[0] >= 0:
            print(nums2[0]*nums[-1])
        if nums2[0] < 0:
            print(nums)

问题二

【20190920】【校招笔试题】腾讯技术研究类和数据分析第三次笔试(2019.9.20)(待续)_第3张图片【20190920】【校招笔试题】腾讯技术研究类和数据分析第三次笔试(2019.9.20)(待续)_第4张图片

思路及代码

# 挺暴力了,只过了20%
n = int(input())
nums = list(map(int, input().split()))
cnt = 0
for i in range(n):
    for j in range(i+1, n):
        left1, right1 = min(abs(nums[i]),abs(nums[j])), max(abs(nums[i]),abs(nums[j]))
        left2, right2 = min(abs(left1-right1),abs(left1+right1)), max(abs(left1-right1),abs(left1+right1))
        if left2 <= left1 and right2 >= right1:
            cnt += 1
print(cnt)

问题三

【20190920】【校招笔试题】腾讯技术研究类和数据分析第三次笔试(2019.9.20)(待续)_第5张图片【20190920】【校招笔试题】腾讯技术研究类和数据分析第三次笔试(2019.9.20)(待续)_第6张图片

思路及代码

# 滑窗的思想,也挺暴力,只过了20%
n, k = list(map(int, input().split()))
xy = []
for _ in range(n):
    xi, yi = list(map(int, input().split()))
    xy.append([xi, yi])

result = 0

def cal(left, right, xy):
    harder = float('inf')
    ss = 0
    for i in range(left, right):
        harder = xy[i][1] if xy[i][1] < harder else harder
        ss += xy[i][0]
    return ss*harder

left, right = 0, k
while right <= n:
    result = cal(left, right, xy) if cal(left, right, xy) > result else result
    left += 1
    right += 1
print(result)

问题四

【20190920】【校招笔试题】腾讯技术研究类和数据分析第三次笔试(2019.9.20)(待续)_第7张图片【20190920】【校招笔试题】腾讯技术研究类和数据分析第三次笔试(2019.9.20)(待续)_第8张图片

思路及代码

# 输入的数转化为十进制计算,计算完再转化为K进制,只过了20%
# 需要注意的是:超过十的都是字母表示

T = int(input())

ssss = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V',
        'W', 'X', 'Y', 'Z']

def tentok(num, k):  # return list
    res = [num % k]
    tmp = num // k
    while tmp > 0:
        res.append(tmp % k)
        tmp = tmp // k
    return res[::-1]

def ktoten(num, k):  # return str
    st = list(str(num))
    for i in range(len(st)):
        if st[i] in ssss:
            st[i] = ord(st[i]) - ord('A') + 10
        else:
            st[i] = int(st[i])
    l = len(st)
    res = 0
    for i in range(l):
        res += st[i] * k ** (l - i - 1)
    return str(res)

for _ in range(T):
    result = ''
    K = int(input())
    strs = input().split()
    n1, n2, ch = strs[0], strs[1], strs[2]
    tmp = eval(ktoten(n1, K) + ch + ktoten(n2, K))
    tmp = tentok(tmp, K)
    for j in range(len(tmp)):
        if tmp[j] < 10:
            result = result + str(tmp[j])
        else:
            result = result + ssss[tmp[j] - K]
    print(result)
作者:野径入桑麻
链接:https://www.nowcoder.com/discuss/271384?type=post&order=time&pos=&page=1
来源:牛客网

# 腾讯第一题,最大数 100%
n,m = map(int, input().split())
lsa = list(map(int,input().split()))
lsb = list(map(int,input().split()))
lsa.sort()
lsb.sort()
if max(lsa[:-1]) <=0 and min(lsb)>=0:
    print(lsa[-2]*lsb[0])
elif min(lsa[1:]) >=0 and max(lsb)<=0:
    print(lsa[1]*lsb[-1])
elif lsa[-1]*lsb[-1] > lsa[0]*lsb[0]:
    print(max(lsa[-2]*lsb[-1],lsa[0]*lsb[0]))
else:
    print(max(lsa[-1]*lsb[-1],lsa[1]*lsb[0]))
 
 
 
# 腾讯第二题,区间数  100%
while True:
    try:
        n = int(input())
        ls = list(abs(i) for i in map(int, input().split()))
        ls.sort()
        count = 0
        left = 0
        right = 0
        while left < n-1:
            while right = ls[right]:
                    right += 1
                else:
                    break
            count += max(0,right-left -1)
            left += 1
        print(count)
    except:
        break
 
# 腾讯笔试第四题 进制转换  100%
def helper(num):
    if num < 10:
        return num
    elif num >= 10:
        return chr(num - 10 + 65)
 
def k2ten(k, number):
    return int(str(number), base=k)
 
 
def ten2k(k, number):
    ls = []
    while True:
        s = number // k
        tmp = number % k
        ls.append(helper(tmp))
        if s == 0:
            break
        number = s
    ls = [str(i) for i in ls[::-1]]
    return (''.join(ls))
 
 
while True:
    try:
        t = int(input())
        ans_list = []
        for _ in range(t):
            k = int(input())
            num1,num2,cha = input().split()
            num1_new = k2ten(k,str(num1))
            num2_new = k2ten(k,str(num2))
            ans = eval(str(num1_new) + cha + str(num2_new))
            res = ten2k(k,ans)
            ans_list.append(res)
        for item in ans_list:
            print(item)
    except:
        break
 
 
# 腾讯第五题, AC 0.9
n,m = map(int, input().split())
ls = []
for _ in range(n):
    ls.append(input())
ls.sort()
ans_ls = [-1] * m
for i in range(m):
    str1,str2 = input().split()
    len1, len2 = len(str1), len(str2)
    for item in ls:
        if item[:len1] == str1 and item[:len2] != str2:
            ans_ls[i] = item
            ls.remove(item)
            break
print(ans_ls)

 

你可能感兴趣的:(校招笔试)