腾讯笔试 8.23 python

第一题 括号匹配不会
第二题 求积分 这题目***在于需要取小数点6,卡了我半个小时 100
import math
def solution(A,B,C,D):
    ans = (1/3)*A*(D**3-C**3) + 0.5*(D**2-C**2)+B*(D-C)
    return ans

n = int(input())
for _ in range(n):
    a,b,c,d = list(map(int,input().split()))
    ans = abs(solution(a,b,c,d))
    print("%.6f"%ans)
第三题 选队长 n*2**(n-1) 100
n = int(input())

mod = 10 ** 9 + 7


def cal(x, n, p):
    res = 1
    while n > 0:
        if n % 2:
            res = res * x % p
        x = x * x % p
        n = n//2
    return res


ans = n * cal(2, n - 1, mod)
ans = ans % mod
print(ans)
第四题  图中配对问题 90
from collections import defaultdict

n, m = list(map(int, input().split()))
A = []
for i in range(m):
    A.append(input().split())
dp = defaultdict(list)

for x, y in A:
    dp[x].append(y)
    dp[y].append(x)

# print(dp)

mem = defaultdict(list)
for k, v in dp.items():
    new_k = ''.join(sorted(v))
    mem[new_k].append(k)

ans = 0
for k, v in mem.items():
    n = len(v)
    if n > 1:
        ans += n*(n-1)/2
print(int(ans))
第五题 没时间做了 赛后做了一下,不知道对不对
from collections import defaultdict
A = defaultdict(list)
B = defaultdict(list)
n,m,k = list(map(int,input().split()))
for _ in range(m):
    x,y,_ = list(map(int,input().split()))
    A[x].append(y)
    A[y].append(x)
for _ in range(k):
    x, y = list(map(int, input().split()))
    B[x].append(y)
ans = float('inf')
dp = [ans]*(n+1)
dp[1] = 0
for i in range(100):
    for k,v in B.items():
        for j in v:
            dp[j] = min(dp[j], dp[k])
    for k, v in A.items():
        for j in v:
            dp[j] = min(dp[j], dp[k] + 1)
print(dp[n])




#笔试题目##腾讯#
全部评论
为什么round是不通过我怀疑是python的问题,大家有兴趣可以查一下,因为我之前笔试吃过round亏,所以用的format格式化.
1 回复 分享
发布于 2020-08-23 22:45
我觉得第二题如果用定积分来做的话,应该是  ∫|y|dx 积分区间是[C,D],我看你们都忽略了绝对值,这样算出来都是正确的吗?可能我想的有错误。。。
1 回复 分享
发布于 2020-08-24 13:26
第三题 n*(2**(n-1))%(10**9+7)直接输出只a了80%,剩余的超时了,绝了😂
点赞 回复 分享
发布于 2020-08-23 22:27
你第二题通过了?每输入一组数据都要打印输出?题目好像说保留4位小数精度就算通过吧?没要求输出6位小数吧?我是这样的通过0%...... n = int(input()) data = [] for _ in range(n):     data.append(list(map(int, input().split()))) def func(x, a, b):     return a * x ** 3 / 3 + x ** 2 / 2 + b * x for i in range(n):     a, b, c, d = data[i]     res = func(d, a, b) - func(c, a, b)     print(round(res, 6))
点赞 回复 分享
发布于 2020-08-23 22:29
我用round保留的六位一个都没过。。。。
点赞 回复 分享
发布于 2020-08-23 22:31
woc,为什么同样的思路,我的0%?代码如下: import sys if __name__=='__main__&(688)#39;:     for line in sys.stdin:         T = int(line.strip())         for _ in range(T):             A, B, C, D = map(int, sys.stdin.readline().split())             DMC, DPC = D - C, D + C             area = DMC * (DPC**2 - D*C) * A / 3 + DMC * DPC / 2 + B * DMC             # area = A * (D**3 - C**3) / 3 + (D**2 - C**2) / 2 + B * (D-C)             print(round(abs(area), 6))
点赞 回复 分享
发布于 2020-08-23 22:35
楼主可以解释一下第四题为什么ans += n*(n-1)/2吗~谢谢!
点赞 回复 分享
发布于 2020-08-24 02:42
楼主,第三题选队长算法可以简单讲解下么,谢谢
点赞 回复 分享
发布于 2020-08-24 15:12
牛客网里面到底什么包能import什么不能呀😥有时候import就显示没有
点赞 回复 分享
发布于 2020-08-25 19:04
关于求积分的,之前考了腾讯实习生,当时的积分题是求抛物线和直线围成的面积的,这样就没法直接反算积分公式了吧,对于这种复杂的求积分,楼主有什么解决方法吗?
点赞 回复 分享
发布于 2020-08-25 19:15
m
点赞 回复 分享
发布于 2020-09-07 01:19

相关推荐

和蔼:在竞争中脱颖而出,厉害! 但是有一个小问题:谁问你了?😡我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了
点赞 评论 收藏
分享
点赞 评论 收藏
分享
6 28 评论
分享
牛客网
牛客企业服务