该怎么 做呢?

n,k=map(int,input().split())
if n==1:
    if k==1:print(1)
    else :print(-1)
if n==2:
    if k<=3 :print(k)
    else :print(-1)
if n==3:
    a=int((k-1)/3+1)
    b=int(k-1)%3
    print(int(pow(2,a)-1+b))
if n>3:
    l=1
    r=int(k/n)+1
    #print(r)
    if(l==r):x=0
    while(l<r):
        mid=int((l+r)/2)
        #print(mid)
        x=3*mid+(n-3)*int(pow(2,mid)-1)
        if x>=k:r=mid
        else :l=mid+1
    x=3*(l-1)+(n-3)*int(pow(2,(l-1))-1)
    a=k-x
    print(int(pow(2,l))-2+a)


谁会python 帮我看看 为什么 我一个样例都过不了?

1 条评论

  • 1

信息

ID
1472
难度
8
分类
其他 | 二分查找高精度 点击显示
标签
递交数
1354
已通过
176
通过率
13%
被复制
6
上传者