canuc80k1409·10/50

XOR Của Một Đoạn Số

Nộp bài trên LQDOJ

Bài 14 · Bitwise Operations

Cho hai số nguyên và . Hãy tính XOR của tất cả các số nguyên trong đoạn đóng từ đến :

Input

  • Một dòng chứa hai số nguyên và .

Output

  • In giá trị XOR của toàn bộ các số nguyên từ đến , kể cả hai đầu mút.

Constraints

  • .

Scoring

  • Subtask ( điểm): test có nhỏ, cho phép XOR trực tiếp từng số.
  • Subtask ( điểm): test đầy đủ; test là một đoạn dài gần cận trên, còn test là đoạn chỉ gồm số .

Example

Test 1

Input

5 9

Output

5

Giải thích: Khi thực hiện XOR lần lượt các số , giá trị cuối cùng thu được là .

Lời giải tóm tắt
  • Ý tưởng: Đặt . Dãy lặp theo : lần lượt là . Khi đó XOR trên đoạn bằng .
  • Chứng minh đúng đắn: Ta có
  • Chứng minh đúng đắn:
  • Chứng minh đúng đắn: XOR hai vế với làm phần tiền tố xuất hiện hai lần và triệt tiêu, nên biểu thức cần tìm đúng bằng . Với , tiền tố bên trái rỗng và được xem là .
  • Chứng minh đúng đắn: Công thức của thu được bằng cách nhóm bốn số liên tiếp: XOR của mỗi khối bằng , rồi xét số phần tử còn dư. Vì thế hàm theo bốn trường hợp luôn tính đúng tiền tố, và thuật toán tính đúng XOR của đoạn.
  • Độ phức tạp: Thời gian và bộ nhớ phụ đều là .