canuc80k1433·34/50

Tổng XOR Của Mọi Cặp

Nộp bài trên LQDOJ

Bài 14 · Bitwise Operations

Cho số nguyên không âm . Hãy tính

và in phần dư khi chia cho .

Input

  • Dòng đầu chứa số nguyên .
  • Dòng tiếp theo chứa số nguyên .

Output

  • In tổng yêu cầu theo modulo .

Constraints

  • .
  • .

Scoring

  • Subtask ( điểm): test có nhỏ, cho phép duyệt mọi cặp.
  • Subtask ( điểm): test đầy đủ; test và đều có , một test nhấn mạnh bit cao và một test phân bố ngẫu nhiên.

Example

Test 1

Input

3
0 1 4

Output

10

Giải thích: Ba giá trị XOR là và ; tổng bằng .

Lời giải tóm tắt
  • Ý tưởng: Ở mỗi bit b, có ones·zeros cặp khác nhau tại bit đó, mỗi cặp đóng góp 2^b. Cộng đóng góp của 60 bit theo modulo.
  • Chứng minh đúng đắn: Mỗi bước của thuật toán duy trì đúng đại lượng hoặc điều kiện nêu trong ý tưởng. Quy tắc chọn được áp dụng độc lập trên từng bit hoặc từng prefix theo đúng hợp đồng; vì vậy mọi phương án bị loại đều không thể tốt hơn, còn phương án được chọn đạt giá trị tối ưu. Suy ra đầu ra của thuật toán là hợp lệ và tối ưu.
  • Độ phức tạp: Thuật toán đáp ứng cận lớn nhất của đề; phần cài đặt chỉ dùng bộ nhớ tuyến tính theo kích thước input hoặc hằng số theo số bit.