Advertisement
uhbif19

Untitled

Dec 23rd, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.81 KB | None | 0 0
  1. def solve(i, N=64):
  2. VS = [
  3. 2 ** N,
  4. 2 ** (N+1),
  5. (2 ** N) + 2 ** (N+1),
  6. ]
  7.  
  8. if i % 3 == 0:
  9. return i // 3
  10. else:
  11. for v in VS:
  12. if (i + v) % 3 == 0:
  13. return (i + v) // 3
  14.  
  15. # return i + 2**N // 3
  16. # elif i + 2**(N+1) % 3 == 0:
  17. # return i + 2**(N+1) // 3
  18. # elif (i + 2**N + 2**(N+1)) % 3 == 0:
  19. # return (i + 2**N + 2**(N+1)) // 3
  20.  
  21.  
  22. def make(x, N=64):
  23. r = x * 3
  24. while True:
  25. if r >= 2**N:
  26. r -= 2**N
  27. else:
  28. break
  29. return r
  30.  
  31.  
  32. def test(x, N=64):
  33. solved = solve(make(x)) == x
  34. assert make(x) >= 0
  35. assert make(x) <= 2**N
  36. assert solved
  37.  
  38.  
  39. result = str(solve(int(open('input.txt').read())))
  40. open('output.txt', 'w').write(result)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement