滴滴算法笔试 0927

鼠鼠做的 91 100

不知道为什么第一题有一个用例过不去,没啥好思路就暴力做了,佬们可以帮忙看看代码吗?

第一题:波浪数,给定进制【a,b】和十进制【l,r】,以及波浪数【k】,求波浪数满足条件的十进制数。波浪数定义为两个不同的数交替构成的,如 1010, 1A1, ABA;请在【a,b】进制中找到这样的十进制数,且该十进制数必须在区间【l,r】中

#####################################################################
a,b,l,r,wave=map(int,input().split())
mapList={chr(ord("A")+i):10+i for i in range(26)}
for i in range(10):
    mapList[str(i)]=i
numList={10+i:chr(ord("A")+i) for i in range(26)}
for i in range(10):
    numList[i]=str(i)
def getTenTrans(v,k):
    # 对应的元素
    ans=0
    v=str(v)[::-1]
    for i in range(len(v)):
        ans+=k**i*mapList[v[i]]
    return ans
ansList={}
# 先找到需要处理的进制区间内所有对应的元素
for k in range(a,b+1):
    # 上下限
    for i in range(1,k):
        for j in range(k):
            if i == j: continue
            q=numList[i]
            p=numList[j]
            temp=f"{q}"
            idx=2
            while getTenTrans(temp,k)<l:
                temp+=p if idx%2==0 else q
                idx+=1
            v=getTenTrans(temp,k)
            while v<=r:
                if v not in ansList:
                    ansList[v] = 1
                else:
                    ansList[v] += 1
                temp+=p if idx%2==0 else q
                idx+=1
                v=getTenTrans(temp,k)
res=[]
for k,v in ansList.items():
    if v==wave:
        res.append(k)
res.sort()
for i in res:
    print(i)

####################################################################
全部评论
楼主思路大方向没毛病吧
点赞 回复 分享
发布于 今天 11:57 广东
差一个用例过不去,感觉像吃薯片最后一片掏不出来
点赞 回复 分享
发布于 今天 11:57 江西
while getTenTrans(temp,k)
点赞 回复 分享
发布于 今天 11:57 江西
91%已经很牛了,说不定后面批次就约面了
点赞 回复 分享
发布于 今天 11:56 山东
我滴滴笔试完了直接挂了
点赞 回复 分享
发布于 昨天 19:11 北京

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务