minict27

Xem PDF

Điểm: 200 (p) Thời gian: 1.0s Bộ nhớ: 1023M Input: bàn phím Output: màn hình

Cho một số nguyên \(n\). Hãy tính tổng từ \(1\) đến \(n\), ngoại trừ những số là lũy thừa của \(2\) thì sử dụng phép trừ.

Ví dụ: với \(n=5\) thì tổng cần tìm là: \(−1−2+3−4+5=1\), vì \(1,2,4\) lần lượt là \(2^0\),\(2^1\),\(2^2\).

Bạn cần làm \(t\) bộ dữ liệu.

Input

  • Dòng đầu tiên là số nguyên dương \(t\) là số lượng bộ dữ liệu.
  • \(t\) dòng tiếp theo, mỗi dòng là 1 số nguyên \(N\).

Output

  • Gồm \(t\) dòng , mỗi dòng là tổng cần tìm với \(n\) tương ứng.

Constraints

  • \(1 \leq t \leq 100\)
  • \(1 \leq N \leq 10^{9}\)

Example

Test 1

Input
2
5
536870912 
Output
1
144115186196807682

Bình luận


  • 2
    penistone    10:57 p.m. 13 Tháng 2, 2024 chỉnh sửa 4
    Gợi ý

    Tìm lũy thừa của 2 lớn nhất (gọi là pow2) nhỏ hơn hoặc bằng n, sau đó lấy tổng từ 1->n trừ đi pow2 * 4 rồi cộng 2 (thực ra tổng lũy thừa của 2 từ 1 đến pow2 chỉ là pow2 * 2-1 nhưng mình lại tính nó trong tổng từ 1->n nên phải trừ thêm lần nữa)

    Đáp

    https://ideone.com/pXPG2j

    1 phản hồi

    • 0
      hungeazyITistrue    10:32 p.m. 25 Tháng 6, 2022

      damn, đề căng thằng phết


      • 0
        ngokhanh    9:29 a.m. 7 Tháng 6, 2022

        sao bài này không cho nộp bằng c++

        1 phản hồi