蓝桥杯第十一届决赛真题之皮亚诺曲线距离python
借鉴了https://www.cnblogs.com/EchoZQN/p/14829144.html的做法
然而同样的想法,python代码提交之后只能得40分,C++则能满分,不知道具体原因是什么,把python代码放在这里,希望大佬指正。

n=int(input())
a=list(map(int,input().split()))
b=list(map(int,input().split()))
def bm(k,x,y):
    if (k==0): return 1
    lens=3**k
    cnt=(3**(k*2))/9
    
    if (x<(lens/3)):
        if (y<lens/3):
            return bm(k-1,x,y)
        if(y<lens*2/3):
            return cnt+bm(k-1,lens/3-1-x,y-lens/3)
            
        return cnt*2+bm(k-1,x,y-lens/3*2)
    elif(x<lens*2/3):
        if (y<lens/3):
            return cnt*5+bm(k-1,x-lens/3,lens/3-1-y)
        elif(y<lens*2/3):
            return cnt*4+bm(k-1,lens*2/3-1-x,lens*2/3-1-y)
            
        return cnt*3+bm(k-1,x-lens/3,lens-1-y)
    else:
        if (y<lens/3):
            return cnt*6+bm(k-1,x-lens*2/3,y)
        elif(y<lens*2/3):
            return cnt*7+bm(k-1,lens-1-x,y-lens/3)
            
        return cnt*8+bm(k-1,x-lens*2/3,y-lens*2/3)

ans1=bm(n,a[0],a[1])
ans2=bm(n,b[0],b[1])
ansu=abs(ans1-ans2)
print(int(ansu))
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐