Advertisement
artemgf

Питон, посмотреть Роману

Jan 14th, 2018
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.94 KB | None | 0 0
  1. from math import *
  2. a=int(input())
  3. b=int(input())
  4. n = ""
  5.  
  6. while b> 0:
  7.     y = str(b % 2)
  8.     n = y + n
  9.     b = int(b / 2)
  10. lg=int(log2(a))
  11. n="0"*(lg+1-len(n))+n
  12. s=n
  13. g=n.count("1")
  14. if(g==0):
  15.   if(a>=1):
  16.     print(1)
  17.     exit()
  18.   else:
  19.     print(-1)
  20.     exit()
  21. k=len(s)-1
  22. l=True
  23. p=len(s)-1
  24.  
  25. q=False
  26. u=False
  27. j=0
  28. while(j<len(s)):
  29.     if(s[j]=="0"):
  30.       q=True
  31.     else:
  32.       if(s[j]=="1" and q):
  33.         u=True
  34.         break;
  35.     j+=1
  36. if(u==False):
  37.   s="0"*(len(n)-g-1)+"1"*(g+1)
  38.   if(int(s,2)<=a):
  39.     print(int(s,2))
  40.   else:
  41.     print(-1)
  42.   exit()
  43.  
  44. while(k>=1):
  45.   if((n[k]=="1")and(n[k-1]=="0")):
  46.     s=s[0:k-1]+"10"+s[k+1:len(s)]
  47.     break;
  48.   else:
  49.     if(n[k]=="1"):
  50.       s=s[0:k]+"0"+s[k+1:len(s)]
  51.       s=s[0:p]+"1"+s[p+1:len(s)]
  52.       p-=1
  53.   k-=1
  54.        
  55. if((int(s,2)<=a)and(s!=n)):
  56.   print(int(s,2))
  57. else:
  58.   s="0"*(len(n)-g-1)+"1"*(g+1)
  59.   if(int(s,2)<=a):
  60.     print(int(s,2))
  61.   else:
  62.     print(-1)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement