Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def solve(i, N=64):
- VS = [
- 2 ** N,
- 2 ** (N+1),
- (2 ** N) + 2 ** (N+1),
- ]
- if i % 3 == 0:
- return i // 3
- else:
- for v in VS:
- if (i + v) % 3 == 0:
- return (i + v) // 3
- # return i + 2**N // 3
- # elif i + 2**(N+1) % 3 == 0:
- # return i + 2**(N+1) // 3
- # elif (i + 2**N + 2**(N+1)) % 3 == 0:
- # return (i + 2**N + 2**(N+1)) // 3
- def make(x, N=64):
- r = x * 3
- while True:
- if r >= 2**N:
- r -= 2**N
- else:
- break
- return r
- def test(x, N=64):
- solved = solve(make(x)) == x
- assert make(x) >= 0
- assert make(x) <= 2**N
- assert solved
- result = str(solve(int(open('input.txt').read())))
- open('output.txt', 'w').write(result)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement